Gmail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
Atascado embeber formulario relacion 1:N
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  19 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Elivi  
View profile   Translate to Translated (View Original)
 More options Nov 23 2009, 7:14 am
From: Elivi <eliv...@gmail.com>
Date: Mon, 23 Nov 2009 04:14:23 -0800 (PST)
Local: Mon, Nov 23 2009 7:14 am
Subject: Atascado embeber formulario relacion 1:N
Hola , estoy en propel intentar embeber un formulario con una relacion
entre 2 tablas 1 a N en propel y no lo consigo, le he dedicado ya
varias horas y al final tengo que pedir ayuda con este mensaje porque
no doy con la solucion.

La situacion es la siguiente, Una entidad A y una entidad B. La
relacion que las une es 1 a N.
Los elementos de la entidad B ya estan creados.

Cuando quiero crear un elemento B, quiero embeber un formulario con A
para relacionarlo y dejarlo echo de una vez. Entonces al crear A tengo
que crear un nuevo campo o formulario para elegir un elemento de B, y
si todo esta bien relacionarlo.

Problema: No consigo sacar el id del elemento recien creado de A ( si
todo esta bien).

Me he revisado la secuencia de llamadas en las siguientes paginas
http://www.nacho-martin.com/dentro-de-form-bind-de-symfony,
http://sandbox-ws.com/frameworks/symfony-frameworks/how-to-embed-form...,
mirado los foros y redefinido algunos metodos como el bind, para
obtener el objeto B seleccionado y actualizarlo con el id de A , pero
nada de nada.

Alguien podria ayurdame? Muchas gracias.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
williams  
View profile   Translate to Translated (View Original)
 More options Nov 23 2009, 11:16 am
From: williams <williams_riv...@yahoo.com>
Date: Mon, 23 Nov 2009 08:16:08 -0800 (PST)
Local: Mon, Nov 23 2009 11:16 am
Subject: Re: [symfony-es] Atascado embeber formulario relacion 1:N

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&oacute;n</p>',
      'codigo'       => '<p class="texto_pagina">C&oacute;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 <eliv...@gmail.com> escribió:

De: Elivi <eliv...@gmail.com>
Asunto: [symfony-es] Atascado embeber formulario relacion 1:N
A: "symfony-es" <symfony-es@googlegroups.com>
Fecha: lunes, 23 noviembre, 2009, 8:14 am

Hola , estoy en propel intentar embeber un formulario con una relacion
entre 2 tablas 1 a N en propel y no lo consigo, le he dedicado ya
varias horas y al final tengo que pedir ayuda con este mensaje porque
no doy con la solucion.

La situacion es la siguiente, Una entidad A y una entidad B. La
relacion que las une es 1 a N.
Los elementos de la entidad B ya estan creados.

Cuando quiero crear un elemento B, quiero embeber un formulario con A
para relacionarlo y dejarlo echo de una vez. Entonces al crear A tengo
que crear un nuevo campo o formulario para elegir un elemento de B, y
si todo esta bien relacionarlo.

Problema: No consigo sacar el id del elemento recien creado de A ( si
todo esta bien).

Me he revisado la secuencia de llamadas en las siguientes paginas
http://www.nacho-martin.com/dentro-de-form-bind-de-symfony,
http://sandbox-ws.com/frameworks/symfony-frameworks/how-to-embed-form...,
mirado los foros y redefinido algunos metodos como el bind, para
obtener el objeto B seleccionado y actualizarlo con el id de A , pero
nada de nada.

Alguien podria ayurdame? Muchas gracias.

      ___________________________________________________________________________ _________
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8.
http://downloads.yahoo.com/ieak8/?l=e1


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Elivi  
View profile   Translate to Translated (View Original)
 More options Nov 24 2009, 3:50 am
From: Elivi <eliv...@gmail.com>
Date: Tue, 24 Nov 2009 00:50:34 -0800 (PST)
Local: Tues, Nov 24 2009 3:50 am
Subject: Re: Atascado embeber formulario relacion 1:N
Hola Williams en primer lugar gracias por tu respuesta.

He estado revisando tu codigo , pero la idea del que necesito hacer es
si el objeto es nuevo, poderle relacionar con un objeto ya creado.
Es decir, las preguntas ya existen, al crear el nuevo cuestionario
deberia desplegarse un campo y elegir una pregunta de las ya creadas,
y relacionarse.

Para mi el kit de la cuestion es obtener el id del cuestionario, para
una vez validado y comprobar que esta todo correcto poder,
relacionarlo con la pregunta seleccionada.

Voy a seguir dandole aber si consigo una solucion, si la encuentro la
posteo.

Muchas gracias a tod@s.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
manuel suarez  
View profile   Translate to Translated (View Original)
 More options Nov 24 2009, 2:14 pm
From: manuel suarez <paceymas...@gmail.com>
Date: Tue, 24 Nov 2009 16:14:39 -0300
Local: Tues, Nov 24 2009 2:14 pm
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

dime una cosa te muestra el campo vacio???? de la foreingkey???

El 24 de noviembre de 2009 05:50, Elivi <eliv...@gmail.com> escribió:


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
manuel suarez  
View profile   Translate to Translated (View Original)
 More options Nov 24 2009, 2:18 pm
From: manuel suarez <paceymas...@gmail.com>
Date: Tue, 24 Nov 2009 16:18:32 -0300
Local: Tues, Nov 24 2009 2:18 pm
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

de ser así y de estar ocupando el plugin de formularios sfFormExtraPlugin
puedes copiar esto en tu archivo de form ubicado el lib

$this->widgetSchema['periodista_id'] = new
sfWidgetFormPropelChoice(array('model' => 'Periodista', 'add_empty' =>
true));

donde 'periodista_id' es la foreingkey y 'model' => 'Periodista' Bueno la
tabla Periodista donde se obtiene la key

ojala te sirva

El 24 de noviembre de 2009 16:14, manuel suarez <paceymas...@gmail.com>escribió:


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
randolph octavio  
View profile   Translate to Translated (View Original)
 More options Nov 24 2009, 3:59 pm
From: randolph octavio <rbaraza...@gmail.com>
Date: Tue, 24 Nov 2009 12:59:15 -0800 (PST)
Local: Tues, Nov 24 2009 3:59 pm
Subject: Re: Atascado embeber formulario relacion 1:N
Hola, si lo que quieres es llenar un campo con algunas de las opciones
que ya tienes en un modelo, puedes consultar este link: esta hecho
para doctrine, solo deberias poder adaptarlo a Propel.

Recuerda que debes cambiar tanto el widget como el Validator del
campo.

http://www.librosweb.es/symfony_formularios/capitulo11/personalizando...

Comienza a leer desde acá:
Listado 11-10 - Personalizando el widget

Creo que esta es la solución a tu problema.

Saludos.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Elivi  
View profile   Translate to Translated (View Original)
 More options Nov 25 2009, 3:45 am
From: Elivi <eliv...@gmail.com>
Date: Wed, 25 Nov 2009 00:45:00 -0800 (PST)
Subject: Re: Atascado embeber formulario relacion 1:N
Hola , y de nuevo gracias a tod@s.

Estoy intentado buscar soluciones pero aun no doy con ella.

La idea seria una vez salvado el objeto A, actualizar el campo del
objeto B ( que ya esta creado con anterioridad) con el ID del objeto
A.

Pero ni redefinienodo los metodos bind, save... del objeto A soy capaz
de conseguirlo.

Con esta instruccion consigo cuando ni objeto A ni objeto B han sido
creados ( son los 2 nuevos ).
$this->embeddedForms['ObjetoB']->getObject()->setObjetoA($this-

>getObject());

Me tiene bastante quemado, porque creo que tiene que ser algo sencillo
y ya llevo varios dias y no encuentro la solucion.

    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
despai  
View profile  
 More options Nov 25 2009, 7:54 am
From: despai <skk...@gmail.com>
Date: Wed, 25 Nov 2009 04:54:50 -0800 (PST)
Local: Wed, Nov 25 2009 7:54 am
Subject: Re: Atascado embeber formulario relacion 1:N
<?php

/**
 * Artista form.
 *
 * @package    hofestival
 * @subpackage form
 * @author     despai
 * @version    SVN: $Id: sfPropelFormTemplate.php 10377 2008-07-21
07:10:32Z dwhittle $
 */
class ArtistaForm extends BaseArtistaForm
{
  public function configure()
  {
    parent::configure();
    sfContext::getInstance()->getConfiguration()->loadHelpers(array
('Url'));

    unset($this['created_at']);

    /**
     * Incluimos un widget y un validador para cada foto(4)
     * @author despai
     */
    $i = 1; while($i<=4) {
      $this->widgetSchema['foto'.$i] = new
sfWidgetFormInputFileEditable(array(
        'file_src'    => public_path('uploads/artistas/full/'.$this-

>getObject()->getFotoN($i),true),

        'is_image'    => true,
        'edit_mode'   => !$this->isNew(),
        'template'    => '%file%<br/><br/><div style="margin-left:
115px">%input%<br/>%delete% Eliminar</div>'
      ));

      $this->validatorSchema['foto'.$i] = new sfValidatorFile(array(
        'required'   => false,
        'path'       => sfConfig::get('sf_upload_dir').'/artistas/
full',
        'mime_types' => 'web_images',
        'validated_file_class' => 'sfImagenesArtista'
      ));

      $this->validatorSchema['foto'.$i.'_delete'] = new sfValidatorPass
();
      $this->validatorSchema['with_delete'] = new sfValidatorBoolean
();

      $i++; // 5 fotos
    }

    /**
     * Incluimos el resto de widgets y validadores
     * @author despai
     */
    $this->widgetSchema['genero'] = new sfWidgetFormChoice(array(
    'choices' => ArtistaPeer::$tipos_genero
    ));

    $this->widgetSchema['bio'] = new sfWidgetFormTextarea(
      array(),
      array('cols' => 100,'rows' => 20)
    );

    /**
     * Si estamos editando incluimos ArtistaDiscoForm y
ArtistaEnlaceForm
     *  en ArtistaForm . También un form para ambos (nuevo)
     * @author despai
     */
    if (!$this->isNew()) {
      $i = 1;
      foreach($this->getObject()->getArtistaDiscos() as $disco_actual)
{
        $disco_form = new ArtistaDiscoForm($disco_actual);
        $this->embedForm('disco'.$i,$disco_form);
        $i++;
      }

      $nuevo_disco = new ArtistaDisco();
      $nuevo_disco->setArtista($this->getObject());

      $this->embedForm('nuevo_disco',new ArtistaDiscoForm
($nuevo_disco));
      $this->widgetSchema['nuevo_disco']->setLabel('<strong>Nuevo
disco:</strong>');
      $i++;
    }

    if (!$this->isNew()) {
      $i = 1;
      foreach($this->getObject()->getArtistaEnlaces() as
$enlace_actual) {
        $enlace_form = new ArtistaEnlaceForm($enlace_actual);
        $this->embedForm('enlace'.$i,$enlace_form);
        $i++;
      }

      $nuevo_enlace = new ArtistaEnlace();
      $nuevo_enlace->setArtista($this->getObject());

      $this->embedForm('nuevo_enlace',new ArtistaEnlaceForm
($nuevo_enlace));
      $this->widgetSchema['nuevo_enlace']->setLabel('<strong>Nuevo
enlace:</strong>');
      $i++;
    }
  }

  /**
   * reescribimos la función bind para que no salve los forms vacíos
de disco y enlace
   *
   * @param array $taintedValues
   * @param array $taintedFiles
   * @return void
   * @author despai
   */
  public function bind(array $taintedValues = null, array
$taintedFiles = null) {

  if(!$this->isNew()) {
        if(is_null($taintedValues['nuevo_disco']['titulo']) || strlen
($taintedValues['nuevo_disco']['titulo']) === 0 ) {
          $this->embeddedForms['nuevo_disco']->getObject()->setDeleted
(true);
                unset($this->embeddedForms['nuevo_disco'], $taintedValues
['nuevo_disco']);
                $this->validatorSchema['nuevo_disco'] = new sfValidatorPass();
        }

        if(is_null($taintedValues['nuevo_enlace']['url']) || strlen
($taintedValues['nuevo_enlace']['url']) === 0 ) {
          $this->embeddedForms['nuevo_enlace']->getObject()->setDeleted
(true);
                unset($this->embeddedForms['nuevo_enlace'], $taintedValues
['nuevo_enlace']);
                $this->validatorSchema['nuevo_enlace'] = new sfValidatorPass();
        }
  }

        // call parent bind method
        parent::bind($taintedValues, $taintedFiles);
  }

}

On 25 nov, 09:45, Elivi <eliv...@gmail.com> wrote:


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
gato chlr  
View profile  
 More options Nov 25 2009, 10:54 am
From: gato chlr <dany...@gmail.com>
Date: Wed, 25 Nov 2009 11:54:23 -0400
Local: Wed, Nov 25 2009 10:54 am
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

Por que no nos mandas tu schema.yml (o un ejemplo simplificado) para que te
entendamos un poco mejor, la verdad no entendí bien tu explicación del
problema. :)

2009/11/25 despai <skk...@gmail.com>


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
williams  
View profile   Translate to Translated (View Original)
 More options Nov 25 2009, 12:37 pm
From: williams <williams_riv...@yahoo.com>
Date: Wed, 25 Nov 2009 09:37:25 -0800 (PST)
Local: Wed, Nov 25 2009 12:37 pm
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

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 <eliv...@gmail.com> escribió:

De: Elivi <eliv...@gmail.com>
Asunto: [symfony-es] Re: Atascado embeber formulario relacion 1:N
A: "symfony-es" <symfony-es@googlegroups.com>
Fecha: miércoles, 25 noviembre, 2009, 4:45 am

Hola , y de nuevo gracias a tod@s.

Estoy intentado buscar soluciones pero aun no doy con ella.

La idea seria una vez salvado el objeto A, actualizar el campo del
objeto B ( que ya esta creado con anterioridad) con el ID del objeto
A.

Pero ni redefinienodo los metodos bind, save... del objeto A soy capaz
de conseguirlo.

Con esta instruccion consigo cuando ni objeto A ni objeto B han sido
creados ( son los 2 nuevos ).
$this->embeddedForms['ObjetoB']->getObject()->setObjetoA($this-

>getObject());

Me tiene bastante quemado, porque creo que tiene que ser algo sencillo
y ya llevo varios dias y no encuentro la solucion.

      ___________________________________________________________________________ _________
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8.
http://downloads.yahoo.com/ieak8/?l=e1


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Elivi  
View profile   Translate to Translated (View Original)
 More options Nov 26 2009, 4:25 am
From: Elivi <eliv...@gmail.com>
Date: Thu, 26 Nov 2009 01:25:05 -0800 (PST)
Local: Thurs, Nov 26 2009 4:25 am
Subject: Re: Atascado embeber formulario relacion 1:N
Hola, os voy a pegar el schema, que antes no queria ponerlo por no
liar mucho a la gente.

La relacion es que un propietario puede tener varios coches, pero un
coche pertenece a un propietario.
(he omitido el resto de los campos que no son fundamentales).

propietario:
    _attributes: { phpName: Propietario}
    id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement:
true, required: true }
    nombre: { type: VARCHAR, size: '12', required: true }

  coche:
    _attributes: { phpName: Coche }
    id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement:
true, required: true }
    nombre: { type: VARCHAR, size: '15', required: true }
    propietario_id: { type: INTEGER, size: '11', required: false,
foreignTable: propietario, foreignReference: id, onDelete: 'SET NULL',
onUpdate: CASCADE }
    _indexes: { coche_propietario: [propietario_id]}
    _uniques: { coche: [nombre] }

La situacion es que si creo al momento el propietario y el coche
perfecto.
Pero si quiero crear un nuevo propietairo y asignarle un coche no lo
consigo.

Lo mas importante , es que los coches ya estan inventariados en la
base de datos.

Sigo intentadolo, si doy con la solucion la posteo, y si alguien ha
echo algo parecido, haber si me puede indicar.

Muchas gracias de verdad por vuestro interes, me esta siendo muy util,
por lo menos no he tirado la toalla por vuestra ayuda.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
williams  
View profile   Translate to Translated (View Original)
 More options Nov 26 2009, 4:26 pm
From: williams <williams_riv...@yahoo.com>
Date: Thu, 26 Nov 2009 13:26:52 -0800 (PST)
Local: Thurs, Nov 26 2009 4:26 pm
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

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) 
 
no se, asi lo veo yo :S

murkein

--- El jue 26-nov-09, Elivi <eliv...@gmail.com> escribió:

De: Elivi <eliv...@gmail.com>
Asunto: [symfony-es] Re: Atascado embeber formulario relacion 1:N
A: "symfony-es" <symfony-es@googlegroups.com>
Fecha: jueves, 26 noviembre, 2009, 5:25 am

Hola, os voy a pegar el schema, que antes no queria ponerlo por no
liar mucho a la gente.

La relacion es que un propietario puede tener varios coches, pero un
coche pertenece a un propietario.
(he omitido el resto de los campos que no son fundamentales).

propietario:
    _attributes: { phpName: Propietario}
    id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement:
true, required: true }
    nombre: { type: VARCHAR, size: '12', required: true }

  coche:
    _attributes: { phpName: Coche }
    id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement:
true, required: true }
    nombre: { type: VARCHAR, size: '15', required: true }
    propietario_id: { type: INTEGER, size: '11', required: false,
foreignTable: propietario, foreignReference: id, onDelete: 'SET NULL',
onUpdate: CASCADE }
    _indexes: { coche_propietario: [propietario_id]}
    _uniques: { coche: [nombre] }

La situacion es que si creo al momento el propietario y el coche
perfecto.
Pero si quiero crear un nuevo propietairo y asignarle un coche no lo
consigo.

Lo mas importante , es que los coches ya estan inventariados en la
base de datos.

Sigo intentadolo, si doy con la solucion la posteo, y si alguien ha
echo algo parecido, haber si me puede indicar.

Muchas gracias de verdad por vuestro interes, me esta siendo muy util,
por lo menos no he tirado la toalla por vuestra ayuda.

      ___________________________________________________________________________ _________
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8.
http://downloads.yahoo.com/ieak8/?l=e1


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Elivi  
View profile   Translate to Translated (View Original)
 More options Nov 27 2009, 8:13 am
From: Elivi <eliv...@gmail.com>
Date: Fri, 27 Nov 2009 05:13:25 -0800 (PST)
Local: Fri, Nov 27 2009 8:13 am
Subject: Re: Atascado embeber formulario relacion 1:N
Si esa parte la consigo, son un sfwidgetpropelchoice, ha si que el
usuario elige uno, el probema esta a la hora de volcar los datos en la
BBDD.

Al no tener aun el id del propietario, no consigo hacer que actualize
el campo propietario_id en la tabla coches.

Modifico el save, y bind pero no doy con una solucion.

Lo unico alternativo que se me ocurre es crear el propietario, y luego
redigir a otra formulario para seleccionar un coche, pero claro lo
interesante seria poder hacerlo todo en un paso.

Muchas gracias.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
randolph octavio  
View profile   Translate to Translated (View Original)
 More options Nov 27 2009, 3:43 pm
From: randolph octavio <rbaraza...@gmail.com>
Date: Fri, 27 Nov 2009 12:43:33 -0800 (PST)
Local: Fri, Nov 27 2009 3:43 pm
Subject: Re: Atascado embeber formulario relacion 1:N
Hola! a mi parecer existe un problema en como tienes definido tu
Modelo de Datos. Y en como estas enfocando el problema. Me explico
mejor: Lo que tienes es una simple función de inventario donde por un
lado tienes Muchos Posible Clientes y Por otro lado Muchos posible
Coches que van a ser comprados.

Entonces yo redefiniria tu modelo a uno m2m donde el refclass de ambos
sea id_propietario y id_coche. y lo puedes comprobar con la siguiente
pregunta. ¿Como haces si un nuevo cliente queire comprar más de un
coche a la vez? con la relación que tienes definida no creo que lo
puedas en un solo paso. tendrías que hacer una transacción y luego
volver a cargar el mismo formulario para poderle asignar un nuevo
vehiculo. Por definición las relaciones 1:N solo definen una sola
transacción a la vez, esta es otra razón por la que existen las m2m.

Ahora como puedes seleccionar varios Coches al mismo tiempo?. Prueba
lo siguiente: Suponiendo que tengas 3 entidades (Propietarios, Coches,
y PropietariosCoches). la relación la defines en Propietarios y usas
el PropietarioForm. Aqui Symfony por defecto te va a incluir como
campos en el formulario cualquier relación que tengas definida sobre
la entidad a la que pertenece el Formulario sobre le que trabajas.

Entonces en el campo donde se muestran las opcines de la relacion por
lo general (coches_list) que ciertamente usa un widgetPropelChoice te
va a colocar todos los vahiculos que tengas Disponibles en tu entidad
Coches.

En fin, desde mi perspectiva hay un error estructural en tu modelo.

Todo esto desde mi humilde opinión, por lo cual te aconsejo que lo
pienses un poco más, quizas todo lo que te dije es una completa
locura, pero asi es como nosotros resolvemos los problemas con
inventarios.

Saludos.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
williams  
View profile   Translate to Translated (View Original)
 More options Nov 27 2009, 10:34 pm
From: williams <williams_riv...@yahoo.com>
Date: Fri, 27 Nov 2009 19:34:03 -0800 (PST)
Local: Fri, Nov 27 2009 10:34 pm
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

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 <rbaraza...@gmail.com> escribió:

De: randolph octavio <rbaraza...@gmail.com>
Asunto: [symfony-es] Re: Atascado embeber formulario relacion 1:N
A: "symfony-es" <symfony-es@googlegroups.com>
Fecha: viernes, 27 noviembre, 2009, 4:43 pm

Hola! a mi parecer existe un problema en como tienes definido tu
Modelo de Datos. Y en como estas enfocando el problema. Me explico
mejor: Lo que tienes es una simple función de inventario donde por un
lado tienes Muchos Posible Clientes y Por otro lado Muchos posible
Coches que van a ser comprados.

Entonces yo redefiniria tu modelo a uno m2m donde el refclass de ambos
sea id_propietario y id_coche. y lo puedes comprobar con la siguiente
pregunta. ¿Como haces si un nuevo cliente queire comprar más de un
coche a la vez? con la relación que tienes definida no creo que lo
puedas en un solo paso. tendrías que hacer una transacción y luego
volver a cargar el mismo formulario para poderle asignar un nuevo
vehiculo. Por definición las relaciones 1:N solo definen una sola
transacción a la vez, esta es otra razón por la que existen las m2m.

Ahora como puedes seleccionar varios Coches al mismo tiempo?. Prueba
lo siguiente: Suponiendo que tengas 3 entidades (Propietarios, Coches,
y PropietariosCoches). la relación la defines en Propietarios y usas
el PropietarioForm. Aqui Symfony por defecto te va a incluir como
campos en el formulario cualquier relación que tengas definida sobre
la entidad a la que pertenece el Formulario sobre le que trabajas.

Entonces en el campo donde se muestran las opcines de la relacion por
lo general (coches_list) que ciertamente usa un widgetPropelChoice te
va a colocar todos los vahiculos que tengas Disponibles en tu entidad
Coches.

En fin, desde mi perspectiva hay un error estructural en tu modelo.

Todo esto desde mi humilde opinión, por lo cual te aconsejo que lo
pienses un poco más, quizas todo lo que te dije es una completa
locura, pero asi es como nosotros resolvemos los problemas con
inventarios.

Saludos.

      ___________________________________________________________________________ _________
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8.
http://downloads.yahoo.com/ieak8/?l=e1


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
gato chlr  
View profile   Translate to Translated (View Original)
 More options Nov 27 2009, 11:54 pm
From: gato chlr <dany...@gmail.com>
Date: Sat, 28 Nov 2009 00:54:21 -0400
Local: Fri, Nov 27 2009 11:54 pm
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

haber, por lo que veo...
 quieres en un solo formulario hacer las siguientes cosas:

1)seleccionar un cliente (futuro propietario)
2)seleccionar 1..* autos que seran asignados a ese cliente (convirtiendolo
en propietario)
3)claro, enviar el form. y que se registren esos moviemientos en la DB.

si es así lo que se me ocurre es..:

1) crear un formulario con un choice para seleccionar el cliente (futuro
propietario) y varios otros choices para seleccionar los coches. Seguro que
esta parte ya la tienes hecha.

cuando el formulario es enviado tenemos algo asi en los en el request : (ej:
request array {'user'{...},'otrosParametros'{...},'*
aplicacion_propietario_asignacion*'{.....} }).
*aplicacion_propietario_asignacion
*es el que nos interesa (le puse ese nombre como ejemplo, el nombre lo
defines en tu AsignacionPropietarioForm en configure() con el metodo
$this->widgetSchema->setNameFormat('aplicacion_propietario_asignacion[%s]') ;
)
por que ahi adentro esta la informacion del propietario, y de los autos.

entonces hacemos:

$parametos= $request->getParameter('aplicacion_propietario_asignacion'); que
nos dara un array con los parametros que el formulario contiene (ej:
'aplicacion_propietario_asignacion' array {'propietario_id' => 2 ,
'auto_id_1' => array{'id'=>12,'nombre'=>'brasilia','codigo'=>fe12,'*
propietario_id'=>null*},'auto_id_2'
=>array{'id'=>25,'nombre'=>'peta','codigo'=>pe43,'*propietario_id'=>null*}.

supongo que el hecho de que esas negrillas esten en null son el problema que
tienes, por lo que siempre te dira, "propietario_id required" o te da un
error tipo "propietario_id is null" o algo asi en el navegador al lanzar el
formulario.

bueno, luego obtenemos el propietario_id así :

$propietario_id=$parametros['propietario_id'];
//recorremos el array de parametros buscando por los array con la info de
los //autos y les asignamos el valor de $propietario_id en su campo
respectivo
foreach($parametros as $key =>$parametro){
     if(substr($key,0,4) ==='auto')
         $parametro['propietario_id']=$propietario_id;

}

con lo anterios has rellenado los espacios propietario_id de los parametros
de los autos o sea: del ejemplo que di:

'aplicacion_propietario_asignacion' array {'propietario_id' => 2 ,
'auto_id_1' => array{'id'=>12,'nombre'=>'brasilia','codigo'=>fe12,*
'propietario_id'=>null}*,'auto_id_2'
=>array{'id'=>25,'nombre'=>'peta','codigo'=>pe43,*'propietario_id'=>null*}

que ahora es:

'aplicacion_propietario_asignacion' array {'propietario_id' => 2 ,
'auto_id_1' => array{'id'=>12,'nombre'=>'brasilia','codigo'=>fe12,*
'propietario_id'=>2}*,'auto_id_2'
=>array{'id'=>25,'nombre'=>'peta','codigo'=>pe43,*'propietario_id'=>2*}

como este array lo tenemos guardado en $parametros, lo unico que tenemos que
hacer es:

$request->setParameter('aplicacion_propietario_asignacion',$parametros);

que como tiene el mismo nombre reemplazara al array inicial (el que tiene
nulls) para asignarle este que tenemos con todo lleno.

en este momento el $request, tiene toda la informacion para procesar tus
asignaciones, asi que le haces processForm($request,$this->form);
y todo deberia registrarse enla base de datos.

Haber, hace cacho que no hago eso, pero creo que deberia darXD.

Es algo tedioso, pero tampoco encontré una forma automatica de hacer eso,
prefiero ahorrarme tiempo, y seleccoinar un cliente en una pantalla , poner
un buscador, que me lanze resultados de autos y elegir uno por uno, claro
que muchos no estaran de acuerdo, pero bueno,es que aun no he manipulado
mucho ajax :(

deberia funcionar, asi hice varias veces, no es lo mas limpio , pero
funciona  saludos.

2009/11/27 williams <williams_riv...@yahoo.com>


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Elivi  
View profile   Translate to Translated (View Original)
 More options Dec 1 2009, 3:45 am
From: Elivi <eliv...@gmail.com>
Date: Tue, 1 Dec 2009 00:45:55 -0800 (PST)
Local: Tues, Dec 1 2009 3:45 am
Subject: Re: Atascado embeber formulario relacion 1:N
Disculpar la tardanza, pero estos dias he estado liado con otras cosas
y no he podido avanzar nada.

La idea es la siguiente, la tabla coches esta completada, y la tabla
de propietarios vacia.

Cuando quiero ingresar un nuevo propietario, quiero dar la opcion de
asociarlo con un vehiculo.

Entonces al formulario de nuevo propietario, embebo un formulario, con
2 campos, uno es un sfWidgetFormPropelChoice para elegir uno de los
vehiculos posibles y el otro campo es un input normal que el usuario
pondra s/n si quiere o no, asociarlo ya con un vehiculo.

Si se elige s en el  campo input, entonces hay que guardar en el campo
propietario_id , el id del nuevo propietario <- aqui esta el problema.

He redefinido , de nuevo el bind, intentando en primer lugar que si
esta activo el campo s, guardar por un lado el propietario, y de ahi
intentar obtener el id, para asociarlo al objeto vehiculo,
seleccionado y hacerle un update. Pero me da error , intenta guardar
el objeto ip, en lugar de modificarlo.
Intentare redefinir Save, y haber si por ahi consigo algo.

Un saludo , gracias.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Marcos De Andrade  
View profile   Translate to Translated (View Original)
 More options Dec 1 2009, 7:26 am
From: Marcos De Andrade <deandrademar...@gmail.com>
Date: Wed, 2 Dec 2009 07:56:49 +1930
Local: Tues, Dec 1 2009 7:26 am
Subject: Re: [symfony-es] Re: Atascado embeber formulario relacion 1:N

if($form->isValid()){

if($request->getParameter('siono')=="s"){

$persona = new Persona();

$persona->save();

$id = $persona->getId();

*despues aqui haces un update con doctrine o propel pasandole lo que quieras
*
*pruebalo cualquier cosa me avisas*

    }

}

El 2 de diciembre de 2009 04:15, Elivi <eliv...@gmail.com> escribió:

--
Symfony Community Programmer

    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Elivi  
View profile   Translate to Translated (View Original)
 More options Dec 2 2009, 4:01 am
From: Elivi <eliv...@gmail.com>
Date: Wed, 2 Dec 2009 01:01:53 -0800 (PST)
Local: Wed, Dec 2 2009 4:01 am
Subject: Re: Atascado embeber formulario relacion 1:N
Hola Marcos, el trozo de codigo que has posteado funciona
perfectamente en el action, pero al intentar hacerlo en el bind del
formulario no tira.( la idea es esta, porque si mañana quiero embeber
a su vez este formulario dentro de otro, habria que cambiar toda la
logica).

He probado a quitar el fomulario embebido, utilizar solo el de
propietario, quitar el save del action, y ponerlo en el bind ( como
ultima linea, una vez ejecutado este llamando al bind padre) y siempre
me sale el mismo error, error de entrada duplicada. No lo entiendo,
quizas desde el bind no se pueda llamar al save ( aunke no veo el
inconveniente).

Un saludo.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2010 Google