2

嗨,我有一个以下脚本可以在视图助手中重定向

<?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 应用程序的视图助手中重定向?谢谢

4

3 回答 3

3

由于您在 View Helper 类中,因此您不能使用$this->_helper->redirector->gotoUrl($url);,这是一个 Action Controller 功能。

您必须在 View Helper 中调用重定向器。
尝试这个 :

$_redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$_redirector->gotoUrl($url); 
于 2013-04-12T09:47:58.927 回答
2

Redirector是控制器 ACTION 助手,而不是视图助手,因此您应该从控制器而不是视图中使用它。

要从视图重定向(顺便说一句,这不是一个好主意,逻辑应该保留在控制器中,而不是视图中),请尝试使用Zend Action View Helper

于 2013-04-12T09:38:36.417 回答
1

到目前为止,这甚至更简单:

Zend Framework 1.x 参考摘录: 编写自定义助手

通常,该类不应回显或打印或以其他方式生成输出。相反,它应该返回要打印或回显的值。返回的值应适当转义。

基本上一个视图助手应该返回一个值,而不是执行一个动作。

另一方面,动作助手几乎可以做任何你需要做的事情。

下面是一个非常简单的例子来演示direct()在helper中使用方法的形式:

<?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()助手或您自己构造的助手。

于 2013-04-13T13:35:46.330 回答