【问题标题】:Where is the implementation for the ->partial() method in Zend Framework?Zend Framework 中 ->partial() 方法的实现在哪里?
【发布时间】:2013-01-09 05:20:17
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这只是给了我如何使用它的信息(我已经在使用它了)。我要问的是,->partial 在哪里定义以便我可以更改它?感谢您的快速回复顺便说一句
  • 如果你知道它是一个视图助手,很容易找到:library\Zend\View\Helper\Partial.php。
  • 如果你想实现你自己的,写你自己的并将它添加到视图助手路径。如果要完全替换它,请将其添加到同名的帮助程序堆栈中以覆盖本机帮助程序。

标签: zend-framework partial-views zend-view


【解决方案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如何获取partial方法

如果注册了helper,则可以从视图中调用它,因为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
    );
}

【讨论】:

  • 我一会儿看看,你能不能给我解释一下Zend_View是如何获取partial方法的?我的意思是控制器实例化为 $this->view 的实际 Zend_View 对象
  • 非常感谢,这绝对让我开始了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多