将MySQL数据返回到cakephp视图

时间:2013-07-11 21:35:00

标签: cakephp cakephp-2.0

我对cakephp很新,我正在试图写一个非常基本的声明。

在我的视图文件中,我想说如果events表中的is_open列为true,则回显一下。如果不是这样,请回复其他内容。

<?php
  if ($response['data']['Event']['is_open'] == true) {
     echo "Yes";
  } else {

     echo "No";
  }
 ?>

我无法在控制器内向后工作以获取数据。

在我的控制器中我有这样的东西:

    public function some_function() {
    $events = $this->Event->find('all');
}

在我的视图文件中,我收到此错误:

注意(8):未定义的索引:事件[查看/ Applications / agreement.ctp,第21行]

有谁可以指出我做错了什么?

我一直在浏览博客教程,在某些地方我很清楚,而在其他地方则不清楚。在我仍然遇到问题的地方,在视图中显示任何内容。

进一步阅读后,我想在控制器中做这样的事情:

$myVariable = $this->Event->find('first', 
   array( 'fields' => 'Event.is_open ', 
   'conditions' => array('Event.id =' => '400') )); 

我希望说的是从events表中获取is_open值,其中的events.id = 400(稍后此值将是动态的)这看起来是否远程正确? - mmalv刚刚编辑

1 个答案:

答案 0 :(得分: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";
  }
}

所有这些都在食谱中详细解释,只需浏览博客教程。

相关问题