将 MySQL 数据返回到 cakephp 视图
Posted
技术标签:
【中文标题】将 MySQL 数据返回到 cakephp 视图【英文标题】:Returning MySQL data to cakephp view 【发布时间】:2013-07-11 21:35:00 【问题描述】:我对 cakephp 还很陌生,我正在努力写一个非常基本的声明。
在我的视图文件中,我想说如果事件表中的 is_open 列是真的,回显一些东西。如果不正确,请回显其他内容。
<?php
if ($response['data']['Event']['is_open'] == true)
echo "Yes";
else
echo "No";
?>
我无法在控制器中向后工作以首先获取数据。
在我的控制器中,我有这样的东西:
public function some_function()
$events = $this->Event->find('all');
在我的视图文件中,我收到此错误:
注意(8):未定义索引:事件[View/Applications/agreement.ctp,第21行]
谁能指出我做错了什么?
我一直在阅读博客教程,有些地方对我来说很清楚,而在其他地方不清楚。我仍然遇到问题的地方是在视图中显示任何内容。
进一步阅读后,我想在控制器中做这样的事情:
$myVariable = $this->Event->find('first',
array( 'fields' => 'Event.is_open ',
'conditions' => array('Event.id =' => '400') ));
我想说的是从 events.id = 400 的事件表中获取 is_open 值(稍后这个值将是动态的)这看起来是否正确? – mmalv 刚刚编辑
【问题讨论】:
提供 $events 的调试,您可能会自己看到哪里出了问题 请提供一个工作/完整的例子。您在问题中指的是$response
、$events
、$myVariable
- 无法将它们联系在一起。
【参考方案1】:
你是怎么想到$response['data']
的?
在您的EventsController
中,您正确地将$this->Event->find('all')
的返回值设置为$events
。为了让这个变量在你的视图中可用,你需要像这样调用Controller::set
:
$this->set('events', $events);
或者更简单,一步,你可以做到:
$this->set('events', $this->Event->find('all'));
然后在您的事件视图中(可能像View/Events/index.ctp
这样的地方)访问名称为$events
的变量。它应该是格式
Array(
[0] => Array(
'Event' => Array(
'id' => 1,
'name' => 'An open name!',
'is_open' => true
)
),
[1] => Array(
'Event' => Array(
'id' => 1,
'name' => 'Another event but closed',
'is_open' => false
)
)
)
所以现在您需要在视图中运行如下循环:
foreach ($events as $key => $value)
if ($value['Event']['is_open'])
echo "Yes";
else
echo "No";
所有这一切都在食谱中进行了详尽的解释,只需阅读博客教程即可。
【讨论】:
我一直在阅读博客教程,有些地方对我来说很清楚,而在其他地方不清楚。我仍然遇到问题的地方是在视图中显示任何内容。进一步阅读后,我想在控制器中做这样的事情: $myVariable = $this->Event->find('first', array( 'fields' => 'Event.is_open ', 'conditions' => array( 'Event.id =' => '400') ));我想说的是从 events.id = 400 的事件表中获取 is_open 值(稍后这个值将是动态的)这看起来是否正确? 当然有可能——而且很简单!您似乎需要更多时间来掌握所有内容,放轻松并尝试理解示例,而不是仅仅将它们复制过来并在结果上猛烈抨击。如果您已经知道您的 ID(并且它是有效的),则将其设置为模型,例如:$this->Event->id = 400;
然后您的模型将包含该记录的数据,您只需要类似:$isOpen = $this->Event->field('is_open');
不要忘记@987654334 @it 使其在您的视图中可用。
另外,如果您还没有启用 DebugKit 并使用 debug();
查看返回或包含在您的变量中的内容。在 view 中,如果您 debug($this->_viewVars());
您可以查看从控制器传递到视图的内容。以上是关于将 MySQL 数据返回到 cakephp 视图的主要内容,如果未能解决你的问题,请参考以下文章