我正在尝试找到Zend实现partial()方法的位置,以便我可以在其中添加一些ACL代码以进行权限控制。我知道该方法的调用对象始终是Zend_View对象,我看,但是它中似乎缺少部分方法(以及它继承/实现的所有类/接口)。
有人知道Zend_View如何获取该方法吗?
对于那些有优化意识且渴望告诉我应该使用render()的人来说,有问题的部分需要变量输入,因为它们扮演与表行部分相同的角色。除非你能告诉我如何用render()方法做到这一点,否则请保持主题。
另外,我不打算直接修改Zend Framework代码,我只想覆盖实现,但我也希望看到我重写的方法,以便我可以看到我正在使用的内容。
答案 0 :(得分: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
,你可以完全覆盖默认的部分助手。
另见blog about view helpers by Akrabat。
而且,用你的话来说......
如果已注册帮助程序,则可以从视图中调用它,因为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
);
}