| Hello men, yo una vez use eso de embeber form. En mi caso tenía una entidad llamada Cuestionario y Preguntas, se relacionaban 1:N. Un cuetionario tiene 1:N Preguntas jejeje. Mira el ejemplo: En el form cuestionario donde voy a meter los form preguntas tengo esto: <?php /** * Cuestionario form. * * @package * @subpackage form * @author Your name here * @version SVN: $Id: sfPropelFormTemplate.php 10377 2008-07-21 07:10:32Z dwhittle $ */ class CuestionarioForm extends BaseCuestionarioForm { public function configure() { unset($this['created_at'], $this['updated_at']); $this->widgetSchema['usuario_id'] = new sfWidgetFormInputHidden(); $this->widgetSchema['status'] = new sfWidgetFormInputHidden(); $this->widgetSchema['nro_preguntas'] = new sfWidgetFormInputHidden(); $this->widgetSchema->setLabels(array( 'descripcion' => '<p class="texto_pagina">Descripción</p>', 'codigo' => '<p class="texto_pagina">Código</p>', )); $preguntas = $this->getObject()->getPreguntas(); if($preguntas){ foreach($preguntas as $index => $pregunta){ $fieldName = 'pregunta_'.$pregunta->getId(); $form = new PreguntaCuestionarioForm($pregunta); unset($form['cuestionario_id']); $form->widgetSchema->setLabel('texto_pregunta', '<p class="texto_pagina">Pregunta</p>'); $this->embedForm($fieldName, $form); $label = '<input type="submit" name="submit" value="eliminar">'; /*if (count($preguntas) - 1 == $index) { // this is the last book $label.= '<input type="submit" name="submit" value="insert">'; } $label.= ' Pregunta '.($index+1);*/ $this->widgetSchema->setLabel($fieldName, $label); } }else{ } $context = sfContext::getInstance(); $idUser = $context->getUser()->getAttribute('id'); $this->setDefault('usuario_id', $idUser); if($this->isNew()){ $this->setDefault('status', 'N'); $this->setDefault('nro_preguntas', 0); }else{ // creamos un nuevo objeto Pregunta $pregunta = new PreguntaCuestionario(); $pregunta->setCuestionario($this->getObject()); $formNew = new PreguntaCuestionarioForm($pregunta); $formNew->widgetSchema->setLabel('texto_pregunta', '<p class="texto_pagina">Pregunta</p>'); unset($formNew['cuestionario_id']); $this->embedForm('new_pregunta', $formNew); $this->widgetSchema->setLabel('new_pregunta', '<p class="texto_pagina">Nueva pregunta</p>'); } } } Como puedes ver, la validacion del if es para cuando se crea un cuestionario la primera ves que no tiene preguntas y sirve para cuando se va a modificar un Cuestionario especifico y obtener las preguntas para el cuestionario en cuestion. Con respecto a la línea donde sale $preguntas = $this->getObject()->getPreguntas(); Ese metodo lo programe en class Cuestionario extends BaseCuestionario { public function __toString(){ return self::getDescripcion(); } public function getPreguntas(){ $c = new Criteria(); $c->add(PreguntaCuestionarioPeer::CUESTIONARIO_ID, $this->getId()); $result = PreguntaCuestionarioPeer::doSelect($c); return $result; } } Espero que te sirva y que uses propel porque fue lo que use ahí jejejeje pero igual el propel solo es necesario para buscar las preguntas asociadas al cuestionario jejejeje. Suerte murkein --- El lun 23-nov-09, Elivi <eli...@gmail.com> escribió: |
|
| Pero explicate tu mas bien que es lo que quieres hacer y danos un ejemplo mejor y no uses objeto a y b, danos las entidades y dinos el porque quieres al modificar un objeto actualizar su id en el otro si ya estan relacionados. Explicate un poco mejor a ver si matamos esa culebra por la cabeza murkein --- El mié 25-nov-09, Elivi <eli...@gmail.com> escribió: |
|
Entonces si debe ser como dijiste hace un tiempo. Ya tenemos los coches en el stock.ahora ccuando crees un propietario debes mostrarle la lista de los coches disponibles y eso lo verificas mirando el valor de su clave foranea en la tabla.si es un coche el cual no ha sido asigando a un propietario, entonces debe tener ese valor null. Es decir, al crear un propietario, debes tener un metodo que te traiga la lista de coches pero que aun no tengan propietarios: selecte * from coches where propietario_id <> id. (id es del propietrio)
|
|
| Esto es otra cosa que nunca he podido hacer que symfony me la haga por si sola. la realcion m2m, quien tiene un ejemplo? que widget uso? siempre tengo que guardar las cosas por otra parte murkein --- El vie 27-nov-09, randolph octavio <rbara...@gmail.com> escribió: |
|