2013-11-14 4 views
0

У меня есть на моей странице несколько новостей, в каждую новость мы можем добавить комментарий через форму. Так что на самом деле у меня есть 3 новости на моем index.ctp, и под каждой новостью есть форма, чтобы прокомментировать эту новость. Проблема в том, что когда я добавляю комментарий, данные берутся из последней формы на странице. Я не знаю, как их разнообразить. У меня есть красный multirecord forms и Multiple Forms per page (последний подключен к разным действиям), и я не понимаю, как это можно сделать. Вторая проблема, я не могу отправить переменную $ ID через форму контроллера ($ ID имеет истинное значение, я отображается его на index.ctp просто посмотреть)cakephp несколько форм с таким же действием

Это моя форма

<?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; 
    } 
} 
+0

возможный дубликат [CakePHP. Несколько форм на страницу] (http://stackoverflow.com/questions/19982096/cakephp-multiple-forms-per-page) – arilia

ответ

2

вы не закрывающие ваши формы

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

вместо

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

для задачи ид вы должны написать

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

или

echo $this->Form->create(
    'Com', 
    array(
     'url' => array('action'=>'add', $id) 
    ) 
); 
+0

Блестящий !! Спасибо, так просто, и я разбил свою ночную ночную смену. И можете ли вы взглянуть, что случилось с передачей значения $ id контроллеру? Я видел на stackoverflow, что правильное значение отправки через форму находится в поле craeting, после действия в массиве, например my. –

+0

Я отредактировал для ответа на второй вопрос – arilia

+0

Ты мой герой;), действительно;) СПАСИБО –

Смежные вопросы