2012-02-20 18 views
0

私はCakePHPでプロジェクトを開始しました。私はそれの経験がない、私の経験のほとんどはSymfony2です。CakePHPでコントローラからビューにデータベースレコードを渡す方法

今、私はこのプロジェクトとそのデータベースで使用するビューファイル、コントローラ、モデルを構築しました。あるコントローラでは、データベースの1つのレコードをホームページに表示するために渡す必要があります。しかし、私はこのエラーを取得するようレコードを渡すことができないよ:ここ

Notice (8): Undefined variable: content [APP\View\Contents\home.ctp, line 42]

は私のコントローラのコードは次のとおりです。

function home() { 
    $content = $this->Content->query("SELECT title, content FROM content WHERE id = 1;"); 
    $this->set('pagecontent',$content); 
} 

そして、ここでは、私は内のデータを表示するために使用しているコードです。ビューファイル:

<?php $content['content']; ?> 

何が欠けていますか?


EDIT: 私はロスからの回答で概説した変更で<?php $content['content']; ?><?php echo $pagecontent['Content']['content']; ?>にインラインを変更しました。ただし、このエラーは今そこにある:

Notice (8): Undefined index: Content [APP\View\Contents\home.ctp, line 43]

私は<?php echo debug($this->viewVars); ?>を使用しており、これはその出力である:

app\View\Contents\home.ctp (line 42) Array (
    [pagecontent] => Array 
     (
      [0] => Array 
       (
        [content] => Array 
         (
          [title] => <h1>This is a title</h1> 
          [content] => <p>this is some test text</p> 
         ) 

       ) 

     ) 

) 

答えて

1

$this->set('pagecontent',$content); - あなたはビュー変数を設定している場所です。

という変数にアクセスしようとしていますが、実際には$pagecontentという名前で保存されています。あなたはいつもあなたがアクセス権を持っている正確にものを見るためにdebug($this->viewVars);を行うことができます

<h1><?php echo $pagecontent['Content']['title']; ?></h1> 
<div class="page-content"> 
    <?php echo $pagecontent['Content']['content']; ?> 
</div> 

:あなたの出力は、おそらくする必要がありますので

また、ケーキの規則に基づいて、キーcontentは、実際に、Contentでなければなりません。


出力が表示されます。このエラーは、ケーキがデータをどのように返すのかによるものです。

find()またはread()ではなく、query()を使用している可能性があります。あなたのcontentキーが小文字である理由(も説明 - query()uses the table nameはなく、モデル名

試してみてください。

$content = $this->Content->find('first', 
           array('fields' => array('title', 'content'), 
            'conditions' => array('Content.id' => 1) 
            ) 
           ); 

$this->set('pagecontent', $content); 


// view 
echo $pagecontent['Content']['title']; 
echo $pagecontent['Content']['content']; 

が動作するようになりました

代替だけを介してデータにアクセスすることです。配列インデックス:

echo $pagecontent[0]['content']['title']

「CAとしてではありませんケ "のように。

to expand = query()は、findまたはreadとは異なる構造でデータを返します。あなたもこれを行うことができる他の方法があります。

$this->Content->id = 1; 
$this->set('pagecontent', $this->Content->read(array('title', 'content'))); 

も有効である必要があります。

+0

私はあなたの答えに合うように改訂しましたが、同じエラーが発生しています。私は私の質問にもっと情報をアップロードしました。 – mickburkejnr

+0

ありがとう、なぜそれが動作していなかったのか説明してください:) – mickburkejnr

関連する問題