サイト全体で単一の同じレイアウト テンプレートを使用する代わりに、Zend Framework 3 のさまざまなモジュールにさまざまなレイアウトを設定するにはどうすればよいですか?
質問する
2680 次
2 に答える
1
次のコードを使用して、特定のコントローラーのアクションのレイアウトを切り替えることができます。
// A controller's action method that uses an alternative
// layout template.
public function indexAction()
{
//...
// Use the Layout plugin to access the ViewModel
// object associated with layout template.
$this->layout()->setTemplate('layout/layout2');
//...
}
Layout
コントローラー プラグインに加えてLayout
、同じ機能を提供するビュー ヘルパーがあります。レイアウト ビュー ヘルパーを使用すると、たとえば、特定のコントローラー アクションを持たない「静的」ページからレイアウトを切り替えることができます。
コントローラーのすべてのアクションのレイアウトを設定する
コントローラー クラスのすべてのアクション メソッドで同じ代替レイアウトを使用する必要がある場合は、次の例に示すように、クラスのonDispatch()
メソッドをオーバーライドして、そこでメソッドAbstractActionController
を呼び出すことができます。setTemplate()
// Add this alias in the beginning of the controller file
use Zend\Mvc\MvcEvent;
// ...
class IndexController extends AbstractActionController
{
/**
* We override the parent class' onDispatch() method to
* set an alternative layout for all actions in this controller.
*/
public function onDispatch(MvcEvent $e)
{
// Call the base class' onDispatch() first and grab the response
$response = parent::onDispatch($e);
// Set alternative layout
$this->layout()->setTemplate('layout/layout2');
// Return the response
return $response;
}
}
于 2016-12-16T10:07:18.253 に答える