yii2.0套用模板问题

时间:2022-07-29 08:23:50

载入视图

在控制器中:

$this->render();

会加载布局

$this->renderPartial();

不会加载布局(也不能载入框架自带的jquery等)

Yii2 选择布局的方式有3种
一、整个控制器使用

[php]

  1. public $layout = false; //不使用布局
  2. public $layout = "main"; //设置使用的布局文件

二、控制器成员方法里使用

[php]

  1. $this->layout = false; //不使用布局
  2. $this->layout = "main"; //设置使用的布局文件

三、视图中选择布局

[php]

  1. $this->context->layout = false; //不使用布局
  2. $this->context->layout = 'main'; //设置使用的布局文件

JS头部显示

public $jsOptions = [

'position' => \yii\web\View::POS_HEAD

];

第一种解决办法是关闭Csrf

public function init(){

$this->enableCsrfValidation = false;

}

public $enableCsrfValidation = false;

自写FORM表单 添加CSRF

$csrfToken = \YII::$app->request->csrfToken;

return $this->render('test1', ['csrfToken'=>$csrfToken]);

View

<form method='post'>

<input type='text' name='title' value='hello world'/>

<input type='hidden' name='_csrf' value='<?=$csrfToken;?>'/>

<input type='submit' value='提交'/>

</form>

第三种解决办法是在AJAX中加入_csrf字段

var csrfToken = $('meta[name="csrf-token"]').attr("content");

$.ajax({

type: 'POST',

url: url,

data: {_csrf:csrfToken},

success: success,

dataType: dataType

});

转载自  http://www.yiichina.com/tutorial/449