2011-12-27 50 views
0

我用兩個發現statment..the第一獲取文章和第二獲取與此文章的相關評論...當我用這樣的代碼有毛病這個發現statment CakePHP的1.3

我看到這個錯誤
Content: 

    Notice (8): Undefined index: Article [APP\views\articles\view.ctp, line 27] 

Created 

    Notice (8): Undefined index: Article [APP\views\articles\view.ctp, line 31] 

Notice (8): Undefined index: Article [APP\views\articles\view.ctp, line 73] 

articles_controller.php

function view($id=null) { 

      $article = $this->Article->find('all', array(
     'conditions' => array(
     'Article.id'  => $id, 
     'Article.status' => 1 
    ) 
    )); 

      $comment = $this->Article->Comment->find('all', 
      array('conditions' => 
    array('Comment.article_id' => $id, 'Comment.status' => 1))); 



       $this->set(compact('article','comment')); 
       if(!empty($article)){ 

      // increment the number of items the dvd was viewed 
       $this->Article->save(array(
        'Article' => array(
         'id' => $id, 
       'views' => ($article['Article']['views'] + 1) 
        ) 
       )); 
       } 

文章/ view.ctp

 <!-- to show article title,image,content,date --> 
<div class="formats view"> 



<h2>Title: <?php echo $article['Article']['title']; ?></h2> 

         <dl> 
    <dt>Image:</dt> 
     <dd> <?php 
echo $html->image($h,array('height'=>'250px', 'width'=>'280px')); ?> 
</dd> 

       <dt>Content:</dt> 
     <dd><?php echo strip_tags($article['Article']['content']) ; ?></dd> 


     <dt>Created</dt> 
     <dd><?php echo substr($article['Article']['created'], 0, 15); ?></dd> 







      <!-- to show comments related with articles --> 
<?php if(!empty($article['Comment'])): ?> 

    <div class="related"> 
     <h3>Comments For this Article</h3> 
     <table> 
      <thead> 

      </thead> 
      <tbody> 
       <?php foreach($comment as $comments): ?> 
       <tr> 
       <tr> 
       <th>Name,date</th> 
     <td><?php echo '&nbsp;'.$comments['Comment']['name'].' &nbsp;&nbsp;'.substr($comments['Comment']['created'], 0, 15); ?> </td> 
       </tr> 
       <tr> 
       <th>title</th> 
       <td><?php echo $comments ['Comment']['title']; ?></td> 
       </tr> 
        <tr> 
        <th>content</th> 
        <td><?php echo $comments['Comment']['content']; ?></td> 
        </tr> 
       </tr> 
       <?php endforeach; ?> 
      </tbody> 
     </table> 
    </div> 

    <?php endif; ?> 

這個數據庫表

CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL, 
    `content` text NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    `views` int(11) NOT NULL, 
    `section_id` int(11) NOT NULL, 
    `status` tinyint(4) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=47 ; 

回答

0

嘗試從此改變你的第一個發現:

$article = $this->Article->Comment->find(

要這樣:

$article = $this->Article->find(... 

(注意缺乏第二個 「註釋」)

另外 - 沒有理由需要編寫2個單獨的查詢 - 這是CakePHP可以輕鬆處理的Containable Behavior


NEXT FIX變化(從答案的分組部分作出後):

做你的$文章變量的print_r。我想你會看到,它應該是:

$article[0]['Article'] 

,而不是

$article['Article'] 
+0

如果不改變它..同樣的消息我看到 – user1080247 2011-12-27 15:21:22

+0

@ user108047實在不行 - 什麼是SQL的物品─>找到正在產生? '<?php echo $ this-> element('sql_dump'); (在您的視圖中) – Dave 2011-12-27 15:24:16

+0

@ user108047 - (在我的回答中添加了「編輯」) – Dave 2011-12-27 15:29:29

-1

的嘿嘿不要使用以下:

<?php echo $article['Article']['title']; ?> 

嘗試

<?php echo $article['title']; ?> 

我不知道爲什麼會發生,但它有w orked我在其他場合...

同樣在徵求意見foreach語句我注意到你有

<?php foreach($comment as $comments){ ?> 

這一點我不認爲會正確顯示您的意見。你應該有

<?php foreach($comments as $comment){ ?> 

而在你的控制這一點,使用

$comments = $this->Article->Comment->find('all', ... 

我創建一個類似的應用程序,至少這是我如何處理一切。

如果您需要,我會回覆或通過電子郵件發送給我的文章控制器,評論控制器和相應的視圖以供您審閱。

感謝,

+0

當使用<?php echo $ article ['title']; ?> isee通知(8):未定義的索引:標題[APP \ views \ articles \ view.ctp,第18行] – user1080247 2011-12-27 17:08:15

+0

此答案有多個錯誤。 1)當你做一個find('all')時,它不會返回一個單獨的項目,就像你試圖讓他在第一部分中使用一樣。 2)他的foreach是正確的,你的錯(見他的控制器變量)等等等等 – Dave 2011-12-27 17:15:09