yii2 后台怎么直接用admin

yii2 后台怎么直接用admin,第1张

yii2访问权限默认由自带rbac组件管理需要自编写相应规则实现权限管理图形界面

yii2-adminrbac管理视化需要点几鼠标能设置简单规则

本教程软件版本及链接:yii2(v206,使用高级模板),yii2-admin(20)

yii2:

yii2-admin:

本文未涉及自定义规则yii2-admin菜单

假定已经安装yii2且数据库创建user表具体安装步骤见文档

使用composer安装yii2-admin

非windows环境:

php composerphar require mdmsoft/yii2-admin "~20"

php composerphar update

Windows:

composer require mdmsoft/yii2-admin "~20"

composer update

内网络环境复杂能安装间较间响应终止命令重试

配置yii2-admin运行环境

注意:yii2-admin配置common目录全局效导致控制台(console)命令报错

仅权限控制应用于frontend模块所配置写frontend目录

配置文件:frontend\config\mainphp

return [

'modules' => [

'admin' => [

'class' => 'mdm\admin\Module',

'layout' => 'left-menu',//yii2-admin导航菜单

]

],

'components' => [

'authManager' => [

'class' => 'yii\rbac\DbManager', // 使用数据库管理配置文件

]

],

'as access' => [

'class' => 'mdm\admin\components\AccessControl',

'allowActions' => [

'site/',//允许访问节点自行添加

'admin/',//允许所访问admin节点及其节点

]

],

];

创建相应数据库表

控制台输入命令:

yii migrate --migrationPath=@mdm/admin/migrations

yii migrate --migrationPath=@yii/rbac/migrations

安装完

在yii2中,由于yii2版本升级导致了,很多yii2的用法跟yii1有着很大的区别,这几天一直在view层的视图界面徘徊着,遇到什么问题呢? 问题就是搞不清我该如何去引入CSS,JS文件了!也看了社区中其它有经验的大神的教程,也按着做了,但是还是有一些问题存在着,比如说yii2的项目打开后,头部和尾部是公共的,该如何去掉?以及如何才能不改动原mainphp文件的情况下,去引入JS,CSS文件,也许有一种办法就是写一个xxxAssetphp的配置文件,然后通过xxx Asset::register($this)可以引入文件,但是这下我又遇到问题了,碰到了这句代码无效,不起作用,在firebug打开后,head里没有引入任何的CSS,JS文件,样式也变得乱七八糟,后来我又查了下相关资料,恰巧,下了一个其他人发的yii2后台模版,于是,今天早上我大概了看了下后台的样式是怎么布局的,总结了下:

1、在前台view中最简单不过的就是像之前那样一个文件一个文件的引入,于是在顶部使用use调用代码段

use yii\helpers\Html;

然后在下面的Html中可以这样调用

<=Html::jsFile('@web//js/js')>//这里代表你的目录名或者文件名

<=Html::cssFile('@web//css/css')>//同上

这样的话就不需要动其他文件,直接引入文件就好了,需要哪个引入哪个,当然这样写的话就是每次得写很多行代码去加载,最好还是写到配置文件中,但是用配置文件来引入这个问题我暂时还没弄通,后面如果找到原因我会分享给大家

2、前台这样引入,那么在controller中怎么自定义样式文件呢

在控制器中加上以下代码

public $layout = 'layout';//在类中定义一个变量,名为$layout

注意的是这个layout在你的view中有个目录叫layouts,在这个目录下,我新建了一个文件名为layoutphp,在其中我加上一句代码

<php echo $content; >

这样控制器就会自动去找当前视图目录下的layouts目录下的加载视图文件的php文件

以上的几行简短的代码就解决了新手不知道该如何去加载CSS,JS文件的问题,大家如果觉得写Assetphp文件会有问题,就用我这种办法,后期等熟悉了yii2之后在改用其他的办法去加载

另外,我再补充下,在view中怎么去跳转链接到其他的视图文件

同样在顶部先引入类库

use yii\helpers\Url;

然后再需要链接跳转的地方这样写:

<phpecho Url::toRoute('post/index');>//post为你的当前控制器名,index为view模版

1程序的多进程启动,可以配置同时启动的进程数,而不需要一个个启动2程序的退出码exit(1),可以根据程序的退出码来判断是否需要自动重启3程序所产生日志的处理4进程初始化的环境,包括目录,用户,umask,关闭进程所需要的信号等等5手动管理进程(开始,启动,重启,查看进程状态)的web界面,和xmlrpc接口当然还有其他的一些功能,具体的可以参考官方文档。

本文实例分析了Yii实现MySQL多数据库和读写分离的方法。分享给大家供大家参考。具体分析如下: Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 20应用开发所需要的几乎一切功能,也是最强大的框架之一,下文我们来介绍Yii实现MySQL多库和读写分离的方法 前段时间为SNS产品做了架构设计,在程序框架方面做了不少相关的压力测试,最终选定了YiiFramework,至于为什么没选用公司内部的 PHP框架,其实理由很充分,公司的框架虽然是"前辈"们辛苦的积累,但毕竟不够成熟,没有大型项目的历练,犹如一个涉世未深的年轻小伙。Yii作为一个 颇有名气开源产品,必定有很多人在使用,意味着有一批人在维护,而且在这之前,我也使用Yii开发过大型项目,Yii的设计模式和它的易扩展特性足以堪当重任。 SNS同一般的社交产品不同的就是它最终要承受大并发和大数据量的考验,架构设计时就要考虑这些问题, web分布式、负载均衡、分布式文件存储、MySQL分布式或读写分离、NoSQL以及各种缓存,这些都是必不可少的应用方案,本文所讲的就是MySQL 分库和主从读写分离在Yii的配置和使用。 Yii默认是不支持读写分离的,我们可以利用Yii的事件驱动模式来实现MySQL的读写分离。 Yii提供了一个强大的CActiveRecord数据库 *** 作类,通过重写getDbConnection方法来实现数据库的切换,然后通过事件 beforeSave、beforeDelete、beforeFind 来实现读写服务器的切换,还需要两个配置文件dbconfig和modelconfig分别配置数据库主从服务器和model所对应的数据库名称,附代码 DBConfigphp文件如下: 复制代码 代码如下:<php return array( 'passport' => array( 'write' => array( 'class' => 'CDbConnection', 'connectionString' => 'mysql:host=101392;dbname=db1′, 'emulatePrepare' => true, //'enableParamLogging' => true, 'enableProfiling' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8′, 'schemaCachingDuration'=>3600, ), 'read' => array( array( 'class' => 'CDbConnection', 'connectionString' => 'mysql:host=101393;dbname=db1, 'emulatePrepare' => true, //'enableParamLogging' => true, 'enableProfiling' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8′, 'schemaCachingDuration'=>3600, ), array( 'class' => 'CDbConnection', 'connectionString' => 'mysql:host=101394;dbname=db3′, 'emulatePrepare' => true, //'enableParamLogging' => true, 'enableProfiling' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8′, 'schemaCachingDuration'=>3600, ), ), ), ); ModelConfigphp如下: 复制代码 代码如下:<php return array( //key为数据库名称,value为Model 'passport' => array('User','Post'), 'microblog' => array('…'), ); > ActiveRecordphp如下: 复制代码 代码如下:/ 基于CActiveRecord类的封装,实现多库和主从读写分离 所有Model都必须继承些类 / class ActiveRecord extends CActiveRecord { //model配置 public $modelConfig = ''; //数据库配置 public $dbConfig = ''; //定义一个多数据库集合 static $dataBase = array(); //当前数据库名称 public $dbName = ''; //定义库类型(读或写) public $dbType = 'read'; //'read' or 'write' / 在原有基础上添加了一个dbname参数 @param string $scenario Model的应用场景 @param string $dbname 数据库名称 / public function __construct($scenario='insert', $dbname = '') { if (!empty($dbname)) $this->dbName = $dbname; parent::__construct($scenario); } / 重写父类的getDbConnection方法 多库和主从都在这里切换 / public function getDbConnection() { //如果指定的数据库对象存在则直接返回 if (self::$dataBase[$this->dbName]!==null) return self::$dataBase[$this->dbName]; if ($this->dbName == 'db'){ self::$dataBase[$this->dbName] = Yii::app()->getDb(); }else{ $this->changeConn($this->dbType); } if(self::$dataBase[$this->dbName] instanceof CDbConnection){ self::$dataBase[$this->dbName]->setActive(true); return self::$dataBase[$this->dbName]; } else throw new CDbException(Yii::t('yii','Model requires a "db" CDbConnection application component')); } / 获取配置文件 @param unknown_type $type @param unknown_type $key / private function getConfig($type="modelConfig",$key="){ $config = Yii::app()->params[$type]; if($key) $config = $config[$key]; return $config; } / 获取数据库名称 / private function getDbName(){ if($this->dbName) return $this->dbName; $modelName = get_class($this->model()); $this->modelConfig = $this->getConfig('modelConfig'); //获取model所对应的数据库名 if($this->modelConfig)foreach($this->modelConfig as $key=>$val){ if(in_array($modelName,$val)){ $dbName = $key; break; } } return $dbName; } / 切换数据库连接 @param unknown_type $dbtype / protected function changeConn($dbtype = 'read'){ if($this->dbType == $dbtype && self::$dataBase[$this->dbName] !== null) return self::$dataBase[$this->dbName]; $this->dbName = $this->getDbName(); if(Yii::app()->getComponent($this->dbName'_'$dbtype) !== null){ self::$dataBase[$this->dbName] = Yii::app()->getComponent($this->dbName'_'$dbtype); return self::$dataBase[$this->dbName]; } $this->dbConfig = $this->getConfig('dbConfig',$this->dbName); //跟据类型取对应的配置(从库是随机值) if($dbtype == 'write'){ $config = $this->dbConfig[$dbtype]; }else{ $slavekey = array_rand($this->dbConfig[$dbtype]); $config = $this->dbConfig[$dbtype][$slavekey]; } //将数据库配置加到component中 if($dbComponent = Yii::createComponent($config)){ Yii::app()->setComponent($this->dbName'_'$dbtype,$dbComponent); self::$dataBase[$this->dbName] = Yii::app()->getComponent($this->dbName'_'$dbtype); $this->dbType = $dbtype; return self::$dataBase[$this->dbName]; } else throw new CDbException(Yii::t('yii','Model requires a "changeConn" CDbConnection application component')); } / 保存数据前选择 主 数据库 / protected function beforeSave(){ parent::beforeSave(); $this->changeConn('write'); return true; } / 删除数据前选择 主 数据库 / protected function beforeDelete(){ parent::beforeDelete(); $this->changeConn('write'); return true; } / 读取数据选择 从 数据库 / protected function beforeFind(){ parent::beforeFind(); $this->changeConn('read'); return true; } / 获取master库对象 / public function dbWrite(){ return $this->changeConn('write'); } / 获取slave库对象 / public function dbRead(){ return $this->changeConn('read'); } } 这是我写好的类,放在components文件夹里,然后所有的Model都继承ActiveRecord类就可以实现多库和主从读写分离了,至于如何支持原生的SQL也同时使用读写分离,此类都已经实现。 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

看你数据库的参数配置是否正确(请确认参数没错)

看你的AdminUser类,里面有个tableName的方法:返回表名的!!!你看看那个方法返回的表名是不是你数据库的表名(一致才行!!!)

1 确保数据是用户输入安全的(safe)

使用rules方法批量设置Model属性为输入安全的

[php] view plaincopy

public function rules() {

return array(

array('username, password, gender,

email, tel', 'safe'),

);

}

2 如果设置了场景(Scenario),确保该场景匹配输入安全的规则

[php] view plaincopy

public function rules() {

array('gender, email, tel', 'safe', 'on'=> 'create,update'),

}

在属性设置前设置一下场景(Scenario),

[php] view plaincopy

$model->setScenario('create');

$model->attributes = $_POST['user'];

看你数据库的参数配置是否正确(请确认参数没错)

看你的AdminUser类,里面有个tableName的方法:返回表名的!!!你看看那个方法返回的表名是不是你数据库的表名(一致才行!!!)

以上就是关于yii2 后台怎么直接用/admin全部的内容,包括:yii2 后台怎么直接用/admin、yii2框架自动调用js文件的配置怎么设置、yii连接数据库进行修改模型层怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10123079.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存