在控制器中我这样做
<?php
$data = array(
'color' => 'pink',
'type' => 'sugar',
'base_price' => 23.95
);
//make $color, $type, and $base_price
//available to the view:
$this->set($data);
?>
在视图中我直接调用
<?=$color?>
但没有任何东西被回应。 我对它的使用有误?
答案 0 :(得分:2)
您对$this->set()
的使用是正确的。
很可能您没有启用PHP短标签(more info)。这将导致PHP将整个<?=$color?>
块作为文本输出,这将被解析为格式错误的HTML标记并被简单地忽略。检查您的HTML源代码,看看完整输出是什么,而不仅仅是浏览器显示的内容。
作为补救措施,<?php echo $color; ?>
应该可以正常使用。
答案 1 :(得分:0)
正如Farray指出的那样,你错误地使用了set()方法。正确的语法如下:
编辑:我误读了Farrays帖子,你确实正确使用了set(),因为它可以将关联数组作为第一个命令。可能值得将变量类型更改为$ data以及使用set方法的其他内容,如下所示:
<?php
$myarray = array(
'color' => 'pink',
'type' => 'sugar',
'base_price' => 23.95
);
//make $color, $type, and $base_price
//available to the view:
$this->set('myarray', $myarray);
?>
或者,您可以使用速记方法并使用compact()方法:
<?php
$this->set(compact('myarray'));
?>
在你的视图中,如果你运行pr($ myarray);你应该看到你的数组以递归的方式整齐地格式化。如果你没有看到它,那么:
此致 西蒙
答案 2 :(得分:-1)
你们让它变得复杂&gt; Cakephp的意思是做蛋糕编码而不是完全疼痛。只需使用
<?php
$myarray = array(
'color' => 'pink',
'type' => 'sugar',
'base_price' => 23.95
);
//make $color, $type, and $base_price
//available to the view:
$this->set('viewdata', $myarray);
?>
从像这样的视图中抓取你的变量
<?php echo $viewdata['color'];
echo $viewdata['type'];
echo $viewdata['base_price'];
?>