2010-08-22 14 views
5

Estoy construyendo un sitio que requiere formularios múltiples para el mismo modelo en números variables en una sola página. Estas formas pertenecen a un objeto con una identificación. Actualmente, dado que no puedo encontrar la manera de cambiar los identificadores de formularios, tengo un montón de identificadores duplicados.¿Cómo hago que CakePHP's form helper 'create' use una identificación personalizada?

Estoy buscando una forma de anexar el identificador de objeto al id del formulario para que no sean inválidos. Prefiero escribir mi propio javascript, así que no usaré el ajax helper.

<?php 

/** 
* This is a simplified example of what I am trying to do. 
*/ 

?> 

<div id="objects"> 
    <?php foreach($objects as $object): ?> 
    <div class="object"> 
     <?php echo "this is object {$object['Object']['id']}"?> 
     <?php 
     //The following element would show a number of comments the object owns 
     echo $this->element('object_comments_loop', array('comments' => $object['Object']['Comments']); 
     ?> 
     <div class="comment"> 
     <?php 
      //each object has a form. 
      //TODO: this is where the id issue comes into play. 

      echo $form->create('Comment', array('url' => array('controller' => 'comments', 'action' => 'createComment')); 
      echo $form->hidden('object_id', array('value' => $object['Object']['id'])); 
      echo $form->input('comment_body', array('label' => __('comment', true), 'type' => 'text')); 
      echo $form->end(__('comment_submit', true)); 
     ?> 
     </div> 
    </div> 
    <?php endforeach; ?> 
</div> 

Respuesta

4
echo $form->create('Comment', array('url' => array('controller' => 'comments', 'action' => 'createComment'), "id" => "form_".$object['Object']['id'])); 

Que debe hacer el truco, creo.

EDIT:

Después de la revisión, esto es lo que utiliza para obtener lo que pedían:

echo($form->create('Comment', array('action' => 'createComment', "id" => "form_".$object['Object']['id']))); 
+0

me dejó mirar por encima de su código, a continuación, porque esto funciona muy bien para mí: create ("Option", array ("id" => "Test")))?? Ver: codeacula.com y ver fuente. – Codeacula

+0

Actualizado. Esa es la forma que funciona para mí. Si no es así, está más allá de mi conocimiento con lo que se proporciona. – Codeacula

+0

ah, lo siento. Funciona. Tuve un momento de estupidez vista. Estaba mirando una de las entradas dentro del formulario, no la forma en sí. Guau, me siento tonto. Gracias por tu ayuda. –

Cuestiones relacionadas