2

コントローラーを2つ持っています。

  1. カテゴリーコントローラー

    public function readAction()
    {
       $id = $this->_request->getParam('id');
       $categoryModel = new Model_Category();
       if(!$categoryModel)
       {
           throw new \Exception(__METHOD__.', could not create category model');
       }
       $category = $categoryModel->getCategory($id);
       $parent = $category->findParentRow(new Model_Category());
       if(!$parent)
       {
           $this->view->parent = 'no parent';
       }
       else
       {
           $this->view->parent = $parent->name;
       }
    
       // I need to pass category object to read.phtml of controller category
       // so that each attributes of the category could be displayed.
       $this->view->category = $category;
    
       // Below the category section, I also need to list all 
       // the business entities which are the child rows of that category. 
       // So I forward to controller business, action list.
       // Normally I use list.phtml in controller business to do that.
       $this->_forward('list', 'business');
     }
    
  2. ビジネスコントローラー

しかし、_forward を呼び出した後、read.phtml は表示されず、コントローラー業務の list.phtml しか表示されませんでした。私の質問は、コントローラ カテゴリの read.phtml とコントローラ ビジネスの list.phtml を同時に呼び出したい場合はどうすればよいですか?

4

3 に答える 3

1

転送する前に現在のアクションをレンダリングします。

public function readAction()
{
    // ...
    $this->render();
    $this->_forward('list', 'business');
}
于 2012-09-17T12:54:53.407 に答える
0

$viewRenderer->setResponseSegment('someOtherThanContent')最近、レイアウトで使用してレンダリングできます

$this->layout()->someOtherThanContent;
于 2012-09-17T13:35:11.767 に答える
0

read.phtml ビューでは、次を使用できます。

echo $this->render('business/list.phtml');

他のビューを表示します。

于 2012-09-17T12:55:03.230 に答える