2013-04-12 108 views
2

嗨,我有以下腳本視圖助手Zend的重定向視圖助手內

<?php 
class Application_View_Helper_ExistUserRev extends Zend_View_Helper_Abstract{ 

    public function existUserRev($params,$user) 
    { 
      $businessReviewMapper = new Application_Model_Mapper_BusinessReviewsMapper(); 
      $businessReviewModel = new Application_Model_BusinessReviews(); 
     $result = $businessReviewMapper->userReviewStatus($user>getUserId(),$params['bzid']); 
      if($result){ 
      $url = 'http://www.akrabat.com'; 
      $this->_helper->redirector->gotoUrl($url); 
        } 
     } 
} 
?> 

內重定向但似乎我上面的重定向似乎不工作。我如何重定向我的zend應用程序的視圖助手?謝謝

+0

您使用的Zend Fw的版本是什麼? – jbrtrnd

+0

@JBRTRND版本如果沒有錯誤1.6及以上 – d3bug3r

回答

2

Redirector是一個控制器ACTION助手,而不是視圖幫助器,所以你應該從控制器使用它,而不是從視圖。

要從視圖重定向(不是一個好主意BTW,邏輯應該留在控制器中,而不是在視圖中),請嘗試使用Zend Action View Helper

3

當你在一個視圖助手類的時候,你可以不使用$this->_helper->redirector->gotoUrl($url);,這是一個動作控制器功能。

你必須在你的視圖助手中調用重定向器。
試試這個:

$_redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); 
$_redirector->gotoUrl($url); 
1

這是更簡單那麼到目前爲止提出的:

摘自Zend框架1.x中參考:Writing Custom Helpers

一般來說,類應不回顯或打印或以其他方式生成 輸出。相反,它應該返回要打印或回顯的值。 返回的值應該適當地轉義。

基本上一個視圖助手應該返回一個值,而不是執行一個動作。

Action helpers另一方面可以做任何你需要做的事情。

這是一個很簡單的例子來演示助手使用direct()方法的形式:

<?php 
/** 
* Simply returns a search form to a placeholder view helper 
* 
*/ 
class My_Controller_Action_Helper_Search extends Zend_Controller_Action_Helper_Abstract 
{ 
    /** 
    * @param string $action 
    * @param string $label 
    * @param string $placeHolder 
    * @return \Application_Form_Search 
    */ 
    public function direct($action, $label = null, $placeHolder = null) 
    { 
     $form = new Application_Form_Search(); 
     $form->setAction($action); 
     $form->search->setLabel($label); 
     $form->query->setAttribs(array(
      'placeholder' => $placeHolder, 
      'size'  => 20, 
     )); 
     return $form; 
    } 
} 

這裏是它是如何在控制器中使用在任何一個視圖腳本或填充一個佔位符助手佈局。

public function preDispatch() 
    { 
     $this->_helper->layout()->search = $this->_helper->search(
      '/index/display', 'Search My Collection!', 'Search Query' 
     ); 
    } 

,並在視圖腳本或佈局:

<?php echo $this->layout()->search?> 

在你的情況,你可以用一個動作助手來建立,構建正確的URL所需要的值,那麼你可以通過這些價值的url()幫手或你自己建造的幫手。