【问题标题】:Using $this->element inside a customHelper在 customHelper 中使用 $this->element
【发布时间】:2012-10-07 18:45:45
【问题描述】:

我正在为我的应用构建一个自定义助手。 在我尝试插入元素的一种方法中。 为此,我正在使用:

$El = ClassRegistry::getObject('view'); 
$El->element('my_element', array('plugin'=>'my_plugin'));

调试 $El 后,我得到的响应是错误的。

你们知道这个操作是否可以在 Helper 中进行吗?

谢谢

【问题讨论】:

    标签: cakephp cakephp-2.0 helper


    【解决方案1】:

    在 2.0 中,视图对象没有添加到类注册表中。在您的助手$this->_View 中有对视图对象的引用。不建议在 helpers 中包含元素。

    【讨论】:

    • 我需要返回一些 HTML 这就是我选择使用这个元素的原因。在这种情况下你会推荐什么?
    • 在您的自定义助手中根据需要使用 Html、Form 等助手。
    • 如果您有一大段 HTML 需要同时渲染,并且需要大量数据,该怎么办?我应该用 HTMLHelper 写很多代码吗?
    • 取决于你想做什么。您可以直接从 Helper 函数 (bleh) 回显 HTML。看起来您应该考虑使用该元素来支持助手。例如:而不是$this->CustomHelper->function($var),只需调用元素echo $this->element('element', ['var' => $var]);,如果需要,它可以执行PHP和/或调用其他助手。
    【解决方案2】:

    您可以将视图对象作为参数函数助手传递。例如:

    class ComponentHelper extends AppHelper {
        public function checkboxes( $form, .... ) {
            ...
            $form->element( '...' );
            ...
        }
    }
    

    形式:

    $this->Component->checkboxes( $this, .... );
    

    :)

    【讨论】:

      【解决方案3】:

      在 CakePHP 2 中,如果尝试访问帮助程序中的元素,则需要调用 _View 对象 - 例如:

      $this->_View->Element($element, $options);
      

      这并不可取,听起来您应该考虑直接使用元素来支持 Helper。

      例如:而不是$this->CustomHelper->method($var),只需按照正常的echo $this->element('element', ['var' => $var]); 从视图中调用元素,它可以执行PHP/逻辑和/或在需要时调用其他助手。

      【讨论】:

        猜你喜欢
        • 2020-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        • 1970-01-01
        • 2018-06-03
        相关资源
        最近更新 更多