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

相關文章
相關標籤/搜索