==========================【如何编辑layout】 ==========================

在layout文件夹下新建文件wx.php,写入代码

在Controller中添加代码

如果不想用layout可以把值改为false

layout在不声明的情况下默认main.php

 

在布局(layout目录下main.php、wx.php以及等等自定义文件)文件中

  $this代表类参考手册里面的yii\web下view这个变量,详情参考这里

  $content是view模板(即view文件夹下xx.php)渲染出来的内容

 

 

 

 

 ==========================【如何设置语言】 ==========================

在config/web.php中,在$config中添加代码

'language'=>'zh-CN',

 

 ==========================【如何设置默认路由】 ==========================

在不添加参数r=xxx/xxx的情况下默认访问路由site/index,可在config/web.php里的$config中单独配置defaultRoute项

'defaultRoute' => 'site/index',

 

 ==========================【如何关闭gii】 ==========================

将config文件夹下main-local.php文件中gii代码注释掉

 

 

 ==========================【gii建立model】 ==========================

首先数据库里得有几张表,表名为英文

输入Table Name前几个字将会匹配当前表,选择好之后点击空白处Model Class会被自动填上

Namespace可以有    frontend/models    backend/models   common/models   等等,要对应文件夹,其他的不改,点击Preview按钮,再Generate生成文件

 

 ==========================【gii建立curd】==============================

注意路径大小写,其中View Path是用正斜杠 

 【 hasOne() 和 hasMany() 】

positionContent表的position_id对就position表的id。positionContent跟position是一对一的关系,反过来则是多对一

 

positionContent.php(model)

class PositionContent extends \yii\db\ActiveRecord
{
  public function getPosition(){
  return $this->hasOne(Position::className(), ['id'=>'position_id']);
}

 


  • 第一个参数:所关联的模型的类名称。
  • 第二个参数:是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。


然后在Controller调用,这样就能拿到position表中的数据了。

class TestController extends BackendBaseController
{

  public function actionIndex()
  {
    $data = PositionContent::findOne(10);
    $position = $data->position;
  }
}

 

 

其实hasOne是执行了两次查询,并不是真正的连表查询。

SELECT * FROM `position_content` WHERE `id`=10

SELECT * FROM `position` WHERE `id`='14'

 

 

 ==========================【DetailView中format格式化】 ==========================

detailview中不可以用这种形式,否则会报错

'value'=>function($model){

  return xxxxx;

}

解决方法就是

自己写个function

 detailview中

 

 

value的表示还可以:

以及内部自带的format格式

详细:

https://www.yiichina.com/topic/6746

https://www.yiichina.com/doc/api/2.0/yii-i18n-formatter

http://www.codingdict.com/article/7967

 

【如何控制DetailView中某一行的样式】

detailview中,templete属性可以控制某一行的样式

'templete' => '<tr><th style="width:120px">{label}</th><td>{value}</td></tr>'

options可以设置detailview的class

'options' => ['class' => 'table table-striped']

 

posted on 2018-10-08 21:04  longzhankunlun  阅读(126)  评论(0)    收藏  举报