载入视图
在控制器中:
$this->render();
会加载布局
$this->renderPartial();
不会加载布局(也不能载入框架自带的jquery等)
Yii2 选择布局的方式有3种
一、整个控制器使用
[php]
- public $layout = false; //不使用布局
- public $layout = "main"; //设置使用的布局文件
二、控制器成员方法里使用
[php]
- $this->layout = false; //不使用布局
- $this->layout = "main"; //设置使用的布局文件
三、视图中选择布局
[php]
- $this->context->layout = false; //不使用布局
- $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
});