获取视图中的值

时间:2012-02-16 07:48:22

标签: php cakephp

在控制器中我这样做

<?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?>

但没有任何东西被回应。 我对它的使用有误?

3 个答案:

答案 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);你应该看到你的数组以递归的方式整齐地格式化。如果你没有看到它,那么:

  • 您的pr()命令
  • 之前捕获的视图文件中存在错误
  • 您的php.ini配置文件中已关闭PHP短标记
  • 您的控制器中存在更深层次的基本问题

此致 西蒙

答案 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'];
?>