1

構成ファイルに設定されたアプリケーション全体のパラメーターからレイアウトを動的に設定したいと考えています。

次のようなものがうまくいくと思いました:

<?php

class SiteController extends Controller
{
    public $layout;
    public $layout_name;
    $this->layout_name = Yii::app()->params['layout'];

    $this->layout = "//layouts/".$this->layout_name;

私が行き詰まってしまったのは、[完全に正直に言うと] PHP の根本的な誤解が原因だと思います。次のエラーが表示されます。

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /chroot/home/mikloswe/miklos.web44.net/html/content/protected/controllers/SiteController.php on line 7

誰でもこれを回避する方法を見たり、レイアウトファイルを設定するより良い代替手段を指摘したりできますか? 私の主な目的は、レイアウト ファイルを 1 か所に設定して、すべてのコントローラーをカバーすることです。

また、なぜ PHP が Yii::app()->params['layout'] を関数の外に置くことを許可しないのかについての説明を気にしませんが、クラス ファイル内には、私が欠けているように感じますなにか。

4

1 に答える 1

1

Yii には、この種のことを意図した init 関数があります。このメソッドをクラスに追加します。

public function init() {
    $this->layout_name = Yii::app()->params['layout'];

    $this->layout = "//layouts/".$this->layout_name;
}
于 2013-11-11T21:32:14.737 に答える