0

zendモジュラーベースのフレームワークで単一のアクションを介して複数のビューを作成する方法を教えてください。

例えば

$UserId    = $this->getRequest()->getParam('id');
if($UserId !='')
{    
    $userDetails =$loginObj->getUserTypeByID($UserId);
    if($userDetails == 0)
        $this->_helper->redirector('index', 'profile', 'default');
    else
        $usrType    = $userDetails['user_type'];
    if($usrType =='C' || $usrType =='H' )
    {
        //$this->renderScript('other-user-profile.phtml' );
        //$this->render("other-user-profile.phtml");
        $this->_helper->viewRenderer('profile/other-user-profile.phtml');
            //$this->_forward('other-user-profile.phtml','profile','default');
    }
    else
    {
           $this->render("index.phtml");
    }  
}

これは機能していません。どうすれば解決できますか?

4

1 に答える 1

2

パーシャルビューヘルパーを使用するなど、いくつかの方法で実行できます。

編集:コードセグメントに応じて:

ViewRendererアクションヘルパーを使用することをお勧めします。このページの例11を確認してください。コード内のコメントはかなり自明です。スクリプトパスに注意することをお勧めします。

// Bar controller class, foo module:
class Foo_BarController extends Zend_Controller_Action
{
    public function addAction()
    {
        // Render 'bar/form.phtml' instead of 'bar/add.phtml'
        $this->_helper->viewRenderer('form');
    }

    public function editAction()
    {
        // Render 'bar/form.phtml' instead of 'bar/edit.phtml'
        $this->_helper->viewRenderer->setScriptAction('form');
    }

    public function processAction()
    {
        // do some validation...
        if (!$valid) {
            // Render 'bar/form.phtml' instead of 'bar/process.phtml'
            $this->_helper->viewRenderer->setRender('form');
            return;
        }

        // otherwise continue processing...
    }

}
于 2012-11-29T11:08:18.040 に答える