3

次のように Controller からデータを返しています。

/**
 * Password request sent
 *
 * @return array
 */
public function passwordRequestSentAction ()
{
    return array(
        'foo' => $this->bar,
    );
}

しかし、$this->foocontroller/passwordRequestSent.phtml 内では正しいにもかかわらず、layout.phtml 内では null です。

抽象コントローラーで postDispatch メソッドを作成し、attachDefaultListeners() でそれにリンクして、postDispatch でこれを行う必要がありました。

$e->getViewModel()->setVariables($e->getResult()->getVariables());

それは本当に進むべき道ですか?レイアウトやページ テンプレートに関係なく、すべての変数を共有したいだけです。

4

1 に答える 1

2

次のように呼び出すことで、レイアウト テンプレートにアクセスできます$this->layout()

class MyController extends AbstractActionController
{
    public function myAction()
    {
        $layout = $this->layout();
        // Returns the ViewModel of the Layout
    }
}

詳細とサンプルについては、マニュアルの例を確認してください。

ただし、ほとんどの場合、これらのタスク用のビューヘルパーを作成することをお勧めします-特にナビゲーション/...これは、I want the navigation displayed hereまたはのようなタスクの表示からコントローラーのロジックをカプセル化しShow me the user's login boxます。ほぼすべての種類のステータス メッセージについても同様です。

于 2012-07-16T12:30:12.970 に答える