Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将控制器数据数组传递给home.ctp的元素_Php_Arrays_Cakephp - Fatal编程技术网

Php 将控制器数据数组传递给home.ctp的元素

Php 将控制器数据数组传递给home.ctp的元素,php,arrays,cakephp,Php,Arrays,Cakephp,根据手册和我的代码,这应该是完美的工作,但它不是。我在这段代码上乱搞了太久了,我想让任何人都看看它,看看是否有我看不到的东西 我试图调用plans控制器的index操作,将数据数组传递给元素以供显示。有人知道为什么这不起作用吗 我遇到了一个常见的错误: Notice (8): Undefined variable: plans [APP/views/elements/search_dental_plans_results.ctp, line 12] Warning (2): Invalid

根据手册和我的代码,这应该是完美的工作,但它不是。我在这段代码上乱搞了太久了,我想让任何人都看看它,看看是否有我看不到的东西

我试图调用plans控制器的index操作,将数据数组传递给元素以供显示。有人知道为什么这不起作用吗

我遇到了一个常见的错误:

Notice (8): Undefined variable: 
plans [APP/views/elements/search_dental_plans_results.ctp,  line 12]
Warning (2): Invalid argument supplied for foreach()
[APP/views/elements/search_dental_plans_results.ctp, line 12]
这是我的代码:

home.ctp


为什么计划会被注释掉,为什么isset会出现在if中?试着退出;在返回之前,看看会发生什么,可能请求的默认设置为false,if应该是if$this->params['requested']或ifasset$this->params['requested']&&$this->params['requested']


我也不明白为什么要使用requestAction,根据您发布的代码,您几乎不应该使用requestAction,看起来您的问题不是由CakePHP中的任何内容引起的

未定义的变量是以前在代码中没有设置过的变量。但如果您的元素具有以下特性:

<?php $plans = $this->requestAction('plans/index'); ?>
<?php foreach($plans as $plan): ?>
这意味着美元计划正在制定中

在您的示例中,$this->requestAction可以返回任何内容,甚至什么都不返回,$plans变量仍然被认为是已定义的,您不会得到未定义变量的通知

所以我会试着找其他地方来解决这个问题。也许可以试着改变这一行:

<?php $plans = $this->requestAction('plans/index'); ?>
致:


看看这是否有效。还可以尝试检查语法。可能您遗漏了某个开始或结束标记。

快速测试以查看它是否只是语法,但请尝试在“requestAction”函数中预加一个正斜杠

<?php $plans = $this->requestAction('/plans/index'); ?>
// @see - http://book.cakephp.org/view/434/requestAction
另外,就使用requestAction的适当性而言,我个人喜欢使用它来填充元素中的下拉列表和复选框数组等。它通过分离出一些表示逻辑来保持控制器代码的整洁,并使HTML编码器更容易处理


它在不经常更改的数据(如计划列表)上工作得最好,但缓存查询很重要,否则可能会降低性能。

视图或元素的目的不是向控制器请求数据。控制器为视图提供数据


现在,索引操作没有任何作用。$plan从未分配任何内容,难怪您会收到错误消息。

我以一种意外的方式解决了此问题,至少根据手册,此方法未被注意:

元素

控制器逻辑

工作起来很有魅力:虽然我打算在完成后使用一个可包含和缓存控件,但至少它能按预期工作


不太神圣,问题解决了:

谢谢你的洞察力。出于这一确切原因,手册特别建议采取行动。我需要在布局中表单的元素中显示搜索结果,所以我认为这是最好的方法。将在我处理完之后更新。除非通过requestAction调用该操作,否则不会设置$this->params['requested'],在这种情况下,将其设置为1。所以检查它是否被设置实际上是一个很好的方法。
<?php $plans = $this->requestAction('plans/index'); ?>
<?php foreach($plans as $plan): ?>
<?php $plans = $this->requestAction('plans/index'); ?>
<?php $plans = array(1,2,3); ?>
<?php $plans = $this->requestAction('/plans/index'); ?>
// @see - http://book.cakephp.org/view/434/requestAction
$planDetails = $this->requestAction('/planDetails/pd_list');
foreach ($planDetails as $planDetail) :
function pd_list() {
return $this->PlanDetail->find('all');
}