0

私のページにはいくつかのニュースがあり、すべてのニュースにフォームからコメントを追加できます。実際、index.ctp には 3 つのニュースがあり、各ニュースの下には、この特定のニュースにコメントするためのフォームがあります。問題は、コメントを追加すると、ページの最後のフォームからデータが取得されることです。それらを多様化する方法がよくわかりません。複数レコードのフォームページごとの複数のフォーム(最後のフォームは異なるアクションに接続されています)を赤くしましたが、それを管理する方法がわかりません。2番目の問題は、フォームを介して $id 変数をコントローラーに送信できないことです ( $id には真の値があり、表示するために index.ctp に表示しました)

これは私のフォームです

 <?php $id = $info['Info']['id']; echo $this->Form->create('Com', array('action'=>'add',$id)); ?>
 <?php echo $this->Form->input(__('Com.mail',true),array('class'=>'form-control','field'=>'mail')); ?>
 <?php echo $this->Form->input(__('Com.body',true),array('class'=>'form-control')); ?>
 <?php  echo  $this->Form->submit(__('Dodaj komentarz',true),array('class'=>'btn btn-info')); ?>
 <?php $this->Form->end(); ?>

そして、私のコントローラー ComsController.php があります

class ComsController extends AppController
{
   public $helpers = array('Html','Form','Session');
   public $components = array('Session');

   public function index()
   {
       $this->set('com',  $this->Com->find('all'));
   }
   public function add($idd = NULL)
   {
       if($this->request->is('post'))
       {
           $this->Com->create();
           $this->request->data['Com']['ip'] = $this->request->clientIp(); 
           $this->request->data['Com']['info_id'] = $idd; 
           if($this->Com->save($this->request->data))
           {
               $this->Session->setFlash(__('Comment added with success',true),array('class'=>'alert alert-info'));
               return $this->redirect(array('controller'=>'Infos','action'=>'index'));
           }
           $this->Session->setFlash(__('Unable to addd comment',true),array('class'=>'alert alert-info'));
           return false;

       }
       return true;
   }
 }
4

1 に答える 1

2

フォームを閉じていません

<?php echo $this->Form->end(); ?>

それ以外の

<?php $this->Form->end(); ?>

あなたが書くべきIDの問題のために

echo $this->Form->create(
    'Com', 
    array('action'=>'add/'.$id
    )
);

また

echo $this->Form->create(
    'Com', 
    array(
        'url' => array('action'=>'add', $id)
    )
);
于 2013-11-15T10:20:38.943 に答える