【问题标题】:CakePHP requestAction() alternative option w/ elementCakePHP requestAction() 带有元素的替代选项
【发布时间】:2011-07-20 02:07:37
【问题描述】:

我正试图将值从控制器操作直接传递给元素。

我知道如何做到这一点的唯一方法是使用 requestAction(),但出于资源原因,我不喜欢使用该功能,并且手册中不推荐它。

谁能解释一下另一种方法?

这是我现在拥有的:

鸟控制器操作:

    function element_array_pass() {
    $this->paginate['Bird'] = array(
        'fields'  => array('id', 'name'),
        'contain' => array('id', 'name'),
        'order'   => 'Bird.id'
    );
    $bird_elmnt = $this->paginate('Bird');
    $this->set(compact('bird_elmnt', $bird_elmnt));
}

目录: 视图/元素/element_array_pass.ctp

debug($bird_elmnt); // nothing being passed here.

目录:views/birds/index.ctp

我在这个文件中包含了元素,但是数组不会通过。

echo $this->element('element_array_pass',array("bird_elmnt" => $bird_elmnt)); // call to element.

我想在我的 index.ctp 中包含这个元素,其值是从上面包含的 action() 传递的。

【问题讨论】:

  • 我相信paginate 是一个对象,而不是一个数组。在手册中查找。它应该显示如何访问它。
  • paginate 是控制器中的一个数组
  • 我根据我对以下想法的研究添加了更新的代码,但它仍然不起作用。
  • 这是什么意思? 'contain' => array('id', 'name')
  • 那是用于模型可包含的,但我删除了它,它没有任何区别。我认为这可能是一个 php 设置,但我使用的是 php5,并且我的所有其他脚本都按预期执行。

标签: php arrays cakephp controller elements


【解决方案1】:
echo $this->element('birds_paginator_element',array('bird_elmnt_var'=>$bird_elmnt_var));

【讨论】:

  • 一定是其他地方出了问题。我一直将数据传递给元素。尝试在每个步骤记录数据以查看丢失的位置。
  • 我测试了我的控制器变量,它们包含正确的数组结构和数据。它在元素层丢失了。该元素似乎没有检索到传递的值。
  • 在回显元素之前,您是否再次测试了 $bird_elmnt?
  • 好的,变量传递得很好,但前提是它是从 index() 操作发送的。我创建了一个 element_array_pass() 动作,我试图传递该动作的值,但使用 index.ctp 视图。所以我试图从一个未设置为当前视图的函数访问传递的值。你明白我的意思吗?我的目标是创建一个独立的操作,该操作返回一个数组,我可以在任何视图中将其用于我的元素。
【解决方案2】:

您可以通过element() 方法的第二个参数将其他数据传递给元素。

echo $this->element('birds_paginator_element', array(
    'bird_elmnt_var' => $bird_elmnt
));

// In element
var_dump($bird_elmnt_var);

还可以阅读 Mark Story 的 this 文章。

【讨论】:

  • 这不起作用。在这篇文章之前,我也阅读了 Mark 的笔记,它们在 Cake 1.3 中无效。但感谢您的想法。
  • 1.3 的 API 表示它仍然需要第二个参数作为元素的额外参数,除了 cacheplugin 两个特殊参数:api.cakephp.org/class/view#method-Viewelement
  • 不确定,但它肯定不起作用,这就是我目前所知道的。还在尝试各种事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
相关资源
最近更新 更多