

やりたいこととしてはコメント削除したら  
その記事の詳細ページにredirectしたい。

しかし現状、コメントを削除すると  
記事自体も削除され、トップページにredirectしてしまう・・・  
アドバイス宜しくお願い致します。

【CommentsController】

[code]

    <?php
    
    class CommentsController extends AppController {
        public $helpers = array('Html', 'Form');
    
    
    
        public function add(){
            if ($this->request->is('post')){
                if ($this->Comment->save($this->request->data)){
                    $this->Session->setFlash('Success!');
                    $this->redirect(array('controller'=>'posts','action'=>'view',$this->data['Comment']['post_id']));
                } else {
                    $this->Session->setFlash('failed!');
                }
            }
        }
    
        public function delete($id){
            if ($this->request->is('get')){
                throw new MethodNotAllowedException();
            }
            if ($this->Comment->delete($id)){
                $this->Session->setFlash('Deleted!');
                $this->redirect(array('controller'=>'posts','action'=>'view',$this->data['Comment']['post_id']));
            }
            //$this->redirect(array('controller'=>'posts', 'action'=>'index'));
        }
    }
    
    
    ?>
    
[/code]

【view.ctp】

[code]

    <h2><?php echo h($post['Post']['title']); ?></h2>
    
    <p><?php echo h($post['Post']['body']); ?></p>
    
    <h2>Comments<h2/>
    <ul>
    <?php foreach ($post['Comment'] as $comment): ?>
    <li>
    <?php echo h($comment['body']) ?> by <?php echo h($comment['commenter']); ?>
    <?php
        echo $this->Form->postLink('削除', array('action'=>'delete', $post['Post']['id']),array('confirm'=>'sure?'));
    ?>
    </li>
    <?php endforeach; ?>
    </ul>
    
    
    <h2>Add Comment</h2>
    
    <?php
    echo $this->Form->create('Comment', array('action'=>'add'));
    echo $this->Form->input('commenter');
    echo $this->Form->input('body', array('rows'=>3));
    echo $this->Form->input('Comment.post_id', array('type'=>'hidden', 'value'=>$post['Post']['id']));
    echo $this->Form->end('post comment');
    
    
    
    ?>
    
[/code]


CC BY-SA 3.0
2015-02-11T09:36:19.447
6312
2015-03-13T10:09:28.493
7176
question
php cakephp
コメント削除したら記事自体が削除される


view.ctpの

[code]

    echo $this->Form->postLink('削除', array('action'=>'delete', $post['Post']['id']),array('confirm'=>'sure?'));
    
[/code]

これは完全にPost削除用のコードになっています。まずコントローラー名が指定されていないので現在実行中の`PostsController`と解釈されます。それから渡しているIDもPostのものです。

なので以下のように修正する必要があります

[code]

    echo $this->Form->postLink('削除', array('controller'=>'comments','action'=>'delete', $comment['id']),array('confirm'=>'sure?'));
    
[/code]


CC BY-SA 3.0
2015-02-11T09:46:35.733
6313
2015-02-11T09:46:35.733
5750
6312
answer