0

我对 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 刚刚编辑

4

1 回答 1

1

你是怎么想出来的$response['data']

在您EventsController正确地设置返回$this->Event->find('all')to $events。为了使您的视图可以使用此变量,您需要Controller::set像这样调用它:

$this->set('events', $events);

或者更简单,一步,您可以这样做:

$this->set('events', $this->Event->find('all'));

然后在您的 Event 视图中(可能在某个地方,例如View/Events/index.ctp)通过 name 访问变量$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";
  }
}

所有这一切都在食谱中进行了详尽的解释,只需阅读博客教程即可。

于 2013-07-11T22:05:03.080 回答