0

私は Cakephp にかなり慣れていないので、かなり基本的なステートメントを書こうとして頭を壁にぶつけています。

私のビュー ファイルでは、イベント テーブルの 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): 未定義のインデックス: イベント [View/Applications/agreement.ctp, line 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')$eventsController::set

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

または、さらに簡単に、1 つのステップで次のことを行うことができます。

$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";
  }
}

これはすべて、クックブックで完全に説明されています。ブログのチュートリアルを参照してください。

于 2013-07-11T22:05:03.080 に答える