【4858.com】framework框架之模块开发工作笔记,YII2笔记之一

By admin in 4858.com on 2019年2月12日

 

 

个稍微大点的项目,借使依照yii生成的webapp进行支付。所有的controller放到controllers文件夹下,所有的model放到models文件夹下边,要是你有
n 八个 controller 和 n 多的 model
,那种景色下维护代码将是一个卓殊悲伤的经过。为了幸免那种意况,Yii
提供了一种 Modules(模块) 的目录结构方式。

设置advanced:执行init 执行yii.bat 创设数据库
 修改common/config/main-local.php中的db配置  执行migrate
basic:web目录是足以被外表直接访问的,vendor是第三方内容,running要求可写,models和数据库的表对应,controllers、models、views最首要。url访问的是某个controller下的某部方法,方法命名是action+方法名。方法中指定使用的页面
basic和advanced的目录差异:frontend和backend是三个独立的使用,逐个能够当做是一个basic;common中是它们公用的有些

望着Yii1.1有那么多的不快,又看着Yii2一每一日成熟起来,于是凑一个小品种的原型阶段,试着用Yii2搞一搞。

瞅着Yii1.1有那么多的不适,又望着Yii2一每一天成熟起来,于是凑一个小品种的原型阶段,试着用Yii2搞一搞。

Modules(模块)
是一个独门的单元,包含视图、控制器和其余组件,它和一个使用的不一样是无法独立布置,模块都保存在应用的
moudules 目录里面。

 

随手写了一些认知,以一个Yii1的熟知工人看向Yii2的观点,简单一说吗。(以后时刻只怕在本文后边增添补充)

顺手写了好几体味,以一个Yii1的熟悉工人看向Yii2的意见,简单一说啊。(以往无时无刻或许在本文后边扩大补充)

你的种类得以分为 n 多少个 Module,然后各种 Module 有和好的 controllers
和 models 。那样的团队结构,无论是开发,管理都要便于容易许多。

 

  • 暗中同意的模版使用了bootstrap,很美妙。
  • basic版和advanced版的config文件不大一样。basic版里面,有web.php,后者没有。
  • 【4858.com】framework框架之模块开发工作笔记,YII2笔记之一。安装为华语展现:config/web.php 中,扩展一行
    ‘language’=>’zh-CN’。然后 Home 变成了首页,Powered by Yii
    Framework 变成了技术协理 Yii 框架
  • 动用gii生成model,我勾选了Use Table
    Prefix,那时生成的model,其tableName()函数重临的是
    {{%menu}}。借使不勾选,将回来表名的全称,如 ssn_menu
  • models/user.php里,增加了诸多函数,方便了诸多。
  • 在models及controllers中,四处都用 [ … ] 代替
    array(…),美观和舒适了好多。
  • LibCrudController 对应的URL是 ?r=lib-crud
  • 起先尝试用户登陆部分的定制。。
  • 开始做CRUD (from 20:20)
  • User::find()->all() 而不是 User::model()->findAll()
  • 在_form.php中引用User,需求首先注脚 use app\models\User;
  • 在视图文件中援引ArrayHelper需首先注明 use yii\helpers\ArrayHelper;
  • 在Yii v1.1中须求三行才能解决的多寡录入成分,那里只要一行:
  • 专擅认同的模板使用了bootstrap,很美丽。
  • basic版和advanced版的config文件不大一样。basic版里面,有web.php,后者没有。
  • 设置为汉语彰显:config/web.php 中,扩大一行
    ‘language’=>’zh-CN’。然后 Home 变成了首页,Powered by Yii
    Framework 变成了技术协理 Yii 框架
  • 使用gii生成model,我勾选了Use Table
    Prefix,那时生成的model,其tableName()函数重返的是
    {{%menu}}。假使不勾选,将回到表名的全称,如 ssn_menu
  • models/user.php里,伸张了成百上千函数,方便了成百上千。
  • 在models及controllers中,处处都用 [ … ] 代替
    array(…),雅观和清爽了累累。
  • LibCrudController 对应的URL是 ?r=lib-crud
  • 始发尝试用户登陆部分的定制。。
  • 开始做CRUD (from 20:20)
  • User::find()->all() 而不是 User::model()->findAll()
  • 在_form.php中援引User,要求首先注明 use app\models\User;
  • 在视图文件中引用ArrayHelper需首先注明 use yii\helpers\ArrayHelper;
  • 在Yii v1.1中须要三行才能消除的多寡录入成分,那里只要一行:

YII中的模块是万分灵活的,一个模块可以蕴含子模块。理论上,模块可以是极其嵌套。

GII

<?= $form->field($model, ‘name1’)->textInput([‘maxlength’
=> true]) ?>

<?= $form->field($model, ‘name1’)->textInput([‘maxlength’
=> true]) ?>

模块的目录结构(那里以上不熟悉成的目录结构做表明)

生成model:

  • gii生成的CRUD界面大气、雅观了广大,且指示音信自动为粤语(那应当是GridView的进献)
  • User::findOne($user_id);
    和底下的那几个并差异。这一个重回一条记下,下边的不知是怎么着鬼。
  • gii生成的CRUD界面大气、雅观了许多,且提醒新闻自动为粤语(那应该是GridView的功绩)
  • User::findOne($user_id);
    和下边的那些并不等同。这些再次来到一条记下,上边的不知是怎么鬼。

modules 模块的寄放目录
└── admin
一个模块,模块的名字对应是目录的名字,唯一。也是路由中的moduleid
    ├── components 模块用到的零部件
    ├── controllers 包罗控制器
    │   └── DefaultController.php 暗中认同控制器
    ├── messages 国际化
    ├── models 模型类公事
    ├── AdminModule.php 模块的类公事
    └── views 试图文件
        ├── default 暗中认同视图
        │   ├── index.php 视图文件
        └── layouts 包括布局文件
 
着力的目录结构如上,当然你可以在大团结进入一些自定义的事物。

亟需数据库中有相应的表;I18N多语言;使用表前缀,设置了表前缀时,表名称会自动去掉前缀部分;批量操作

$user=User::find()->where([‘id’ => $id]);

$user=User::find()->where([‘id’ => $id]);

创设模块的不二法门(那里大家经过 yii 自带的 gii 生成器来成立模块)

生成CRUD:依照model(完整路径),生成对应的controller和view文件,包蕴controller中的增删改查

  • 增加 my.css:首先在web/css中增加my.css,然后在assets/AppAsset.php中
  • 增加 my.css:首先在web/css中增加my.css,然后在assets/AppAsset.php中

经过 yii 自带的 gii 生成器来创制基本的社团,开启 gii
的措施是修改你的接纳 config/main.php 文件中如下内容:

生成controller和生成form(通过Model生成form),不常用

public $css = [

public $css = [

<?php
……
‘modules’=>array(
 ‘gii’=>array(
  ‘class’=>’system.gii.GiiModule’,
  ‘password’=>’123456’,//你的密码访问时必要输入
  ‘ipFilters’=>array(‘127.0.0.1′,’::1′),
 ),
),
……

扭转Modules,放在配置文件web.php中

‘css/site.css’,

‘css/site.css’,

接下来访问url 你的利用/index.php?r=gii 访问gii,打开之后选择,左边菜单的
Module Generator 选项。你将会看出上面的镜头

frontend/web/index.php?r=gii,backend也有gii。想放在common中,命名空间写为common/models,而不是app/models

‘css/my.css’,

‘css/my.css’,

Yii framework框架之模块开发分析-生成目录

run从前require文件,将必要的公文Include进来;可能利用Yii:setAlias将引得导入项目

];

];

在 Module ID 输入模块的称号,我那边输入 admin ,然后点击 Preview
按钮。如下图所示,它向你出示了具有将会被变型的公文,允许你在新建从前预览他们
:

GII禁止访问(403),将backend\config\main-local.php中,

  • 置入js文件:$this->registerJsFile(“js/start.js”);
    –当正视jquery的时候,那个明显非凡,提醒找不到$。
  • 那里讲得很精通。多少个方案。其中修改
    assets/AppAsset.php的方案已调通。其中一个关键点在于(见石籀文字):AppAsset::addScript($this,’@web/js/start.js’);
  • 页面右下有一个酷酷的debug-toolbar按钮,点击会弹出一个品位的情事条。
  • 地址栏的 index.php?r=site/index 会变成 index.php?r=site%2Findex
  •       
  • 置入js文件:$this->registerJsFile(“js/start.js”);
    –当依赖jquery的时候,这一个显明非凡,提示找不到$。
  • 那里讲得很掌握。多少个方案。其中修改
    assets/AppAsset.php的方案已调通。其中一个关键点在于(见黑体字):AppAsset::addScript($this,’@web/js/start.js’);
  • 页面右下有一个酷酷的debug-toolbar按钮,点击会弹出一个程度的境况条。
  • 地址栏的 index.php?r=site/index 会变成 index.php?r=site%2Findex
  •       

Yii framework框架之模块开发分析-预览生成目录

$config[‘modules’][‘gii’] = ‘yii\gii\Module’;

接下来点击 Generate 按钮,来扭转所有文件。因为 Web
服务器进程需求写入权限,所以保障您的 /protected
文件夹对于该应用程序是可写入的。

修改为

配备使用那个模块

$config[‘modules’][‘gii’] = [
            ‘class’ => ‘yii\gii\Module’,
            ‘allowedIPs’ => [‘127.0.0.1’, ‘192.168.0.*’]
];

俺们对主配置文件 protected/config/main.php
进行布局,如下的代码须要被涂改,添加了’admin’ :

 

……
‘modules’=>array(
 ‘gii’=>array(
  ‘class’=>’system.gii.GiiModule’,
  ‘password’=>’你的密码’,
 ),
 ‘admin’,
),
……

 

封存上边的修改后后,大家的新 admin
模块已经可以选用了。大家得以由此以下地点访问大家创制的模块:

crud生成后走访出错: Unknown Class – yii\base\UnknownClassException
Unable to find ‘frontend\controllers\PostController’ in file:
/var/www/advanced/frontend/controllers/PostController.php. Namespace
missing? 将PostController.php中namespace app\controllers;改为namespace
frontend\controllers;

您的运用/index.php?r=admin/default/index

在模块中使用 layout

咱俩走访 index.php?r=admin/default/index 会发现,模块使用了你的施用下的
/protected/views /layouts/main.php 文件,而我辈或许希望接纳/protected/modules/admin/views/layouts /main.php 文件,让 admin
模块拥有独立的布局视图。大家得以在:

protected\modules\admin\controllers\DefaultController.php
添加如下代码。

public $layout=’application.modules.admin.views.layouts.main’;

我们把从 /protected/views/layouts/main.php 拷贝到
/protected/modules/admin/views/layouts/
,稍作修改,那样模块就有着了独立的布局视图。

在模块中应用Assets

添加新的模块时,一般会含有图像文件,css文件,JavaScript文件等。

模块可以直接从网站主目录中援引。不过就算想要创制一个模块可以在其余地点引用,并且可以避免命名争辨,就要选拔assets了。

进度是(那里模块名是admin):

1、把要求利用的资源位居modules/admin/assets下。

2、然后通过 CAssetManager,Yii::app()->assetManager
可以自行的将个人资源 publish 到公共目录下网站目录 /assets

3、Yii 会自动在网站目录的 /assets 下创建一个随机不龃龉的文本夹,如
2b31b42b,并把您的modules/admin/assets目录下的公文拷贝过去。

譬如说我的模块是Admin,文件路径通过如下代码拿到,修改protected\modules\admin\AdminModule.php文件。

 

class AdminModule extends CWebModule{
 private$_assetsUrl;
 public function getAssetsUrl(){
 if($this->_assetsUrl===null)
  $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias(‘application.modules.admin.assets’));
  return$this->_assetsUrl;
 }
 public function setAssetsUrl($value){
  $this->_assetsUrl=$value;
 }
}

下一场,在 /protected/modules/admin/views/layouts/main.php 中接纳$this->module->assetsUrl
就可以调用你的css等公事了。模板文件的代码如下:

 

<link rel=”stylesheet” type=”text/css” href=”<?php echo
$this->module->assetsUrl; ?>/css/screen.css” />

4,通过如上操作,该模块只要把admin目录拷贝,就可以屡屡复用了。

模块的陈设,使用办法

在布置文件 /config/main.php 中:

陈设文件中也足以及增进对模块中属性开首化的参数例如:

 

……

4858.com,’modules’=>array(‘admin’=>array(‘web_url’=>’www.phpernote.com’),

……
对应在 Controller 中的访问方式是:

Yii::app()->controller->module->web_url;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有