yii2.0套用模板问题

载入视图php

在控制器中:jquery

$this->render();web

会加载布局ajax

$this->renderPartial();app

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

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

[php]  布局

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


2、控制器成员方法里使用post

[php] this

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


3、视图中选择布局

[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

相关文章
相关标签/搜索