0

サイト全体で単一の同じレイアウト テンプレートを使用する代わりに、Zend Framework 3 のさまざまなモジュールにさまざまなレイアウトを設定するにはどうすればよいですか?

4

2 に答える 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 に答える