0

我试图找到 Zend 实现 partial() 方法的地方,以便我可以在其中添加一些 ACL 代码以进行权限控制。我知道该方法的调用对象始终是 Zend_View 对象,并且我查看了,但是其中似乎缺少部分方法(以及它继承/实现的所有类/接口)。

有人知道 Zend_View 如何获得该方法吗?

对于那些有优化意识并渴望告诉我应该改用 render() 的人来说,所讨论的部分需要可变输入,因为它们扮演的角色与表格行部分所扮演的角色相同。除非你能告诉我如何使用 render() 方法来做到这一点,否则请留在主题上。

另外,我不打算直接修改 Zend Framework 代码,我只是想重写实现,但我也想查看我正在重写的方法,以便我可以看到我正在使用什么。

4

1 回答 1

1

如何编写自己的助手并覆盖默认助手

由于我们谈论的是视图助手,它的代码可以在library\Zend\View\Helper\Partial.php. 如果你想改变局部视图助手的作用,编写你自己的助手:

class MyProject_View_Helper_MyHelper extends Zend_View_Helper_Abstract {}

或者

class MyProject_View_Helper_MyHelper implements Zend_View_Helper_Interface {}

然后通过将路径添加到您的配置中,将此帮助程序添加到帮助程序堆栈。

resources.view.helperPath.MyProject_View_Helper_ = "MyProject/View/Helper/"

如果你调用你的助手Partial,你可以完全覆盖默认的部分助手。

另请参阅Akrabat 的有关视图助手的博客

而且,用你的话来说...

... Zend_View 如何获取部分方法

如果注册了帮助程序,则可以从视图中调用它,因为以下代码Zend_View_Abstract

/**
 * Accesses a helper object from within a script.
 *
 * If the helper class has a 'view' property, sets it with the current view
 * object.
 *
 * @param string $name The helper name.
 * @param array $args The parameters for the helper.
 * @return string The result of the helper output.
 */
public function __call($name, $args)
{
    // is the helper already loaded?
    $helper = $this->getHelper($name);

    // call the helper method
    return call_user_func_array(
        array($helper, $name),
        $args
    );
}
于 2013-01-08T21:07:34.043 回答