パラメーターをコントローラーからレイアウト(つまり、main.php)に送信したい。しかし、main.phpでパラメーターを取得することはできません
私は試した:
コントローラーコード:
$this->render('index',array('param' => $paramValue));
そして、これは私がレイアウトでこれを取得しようとしていた方法です。 main.php
$this->param
(yii 1)のように)$param
しかし、レイアウトでパラメーター値を取得することはできません。誰もこれを行う方法を教えてもらえますか?
yii\base\View には特別な $ params プロパティがあります。
たとえば、Giiで生成されたデフォルトのCRUDコードテンプレートでパンくずリストを構築するために使用されます。
レンダリングする前に次のように設定できます。
use Yii;
Yii::$app->view->params['customParam'] = 'customValue';
コントローラ内では、次のように設定できます。
$this->view->params['customParam'] = 'customValue';
次に、ビューで使用可能になります(メインレイアウトを含む):
/* @var $this yii\web\View */
echo $this->params['customParam'];
公式ガイド にもあります。
この問題に対するいくつかの手順を提案したいと思います。
パラメータを確認し、存在する場合は使用します。
//in controller method
$this->render("view-file-name",["paramName" => "some parameter"]);
//in view file for eg: index.php
//i'm passing paremeter sent form controller's action to view params.
$this->params["paramFromViewFile"] = $paramName; //here $paramName is the parameter we sent from controller's method
//access parameter sent from view file
if($this->params && !empty($this->params["paramFromViewFile"]))
{
echo $this->params["paramFromViewFile"];
}
これは、index.php
ビューではなく、main.php
ビューをレンダリングしているためです。
$param
これは、1.1バージョンでの取得方法です。
UPD:main.php
レイアウトにパラメーターが必要な場合は、Controller
クラスで宣言し、このようにして$this->param
を取得できます。
UPD2:2.0バージョンでは、yii\web\Viewクラスでparamを宣言する必要があるようです。そしてYii::$app->view->param
経由でアクセスします。
$ param uを直接呼び出して値を取得し、試してください
in controller declare a $param,
public $param = '';
then in the acction do
$param='haha';
in layout
echo $this->param;