Llenar Datos en un sfWidgetFormDoctrineSelect

81 views
Skip to first unread message

José Luis

unread,
Mar 30, 2009, 8:40:24 PM3/30/09
to symfony-es
quiero generar una consulta en configure de ClienteForm asi:
$query = Doctrine_Query::create()
->from('Provincia p')
->where('p.departamento_id = ?', valor de otra columna());

donde valor de otra columna debe ser el valor de la tabla
CLiente.departamento_id, puedo obtener este valor en configure(), de
ser asi como?

José Luis Vicente Caballero

unread,
Apr 1, 2009, 11:24:27 AM4/1/09
to symfony-es

Hasta  que logré hacer listas dependientes con widgets de la siguiente manera:

con el plugin sfJqueryWidgetsPlugin, es para Propel modifiqué su código para q trabaje con doctrine en :

class sfWidgetFormPropelSelectAjax extends sfWidgetFormPropelSelect

por:

class sfWidgetFormPropelSelectAjax extends sfWidgetFormDoctrineSelect

y mi ClienteForm.class.php quedó así:

<?php


class ClienteForm extends BaseClienteForm
{
  public function configure()
  {
      $cliente = $this->getObject();
     
      $query2 = Doctrine_Query::create()
      ->from('Distrito d')
      ->where('d.provincia_id = ?', $cliente->getProvinciaId());
   
    $this->widgetSchema['distrito_id'] = new sfWidgetFormDoctrineSelect(array(
    'model' => 'Distrito',
    'method' => 'getDistrito',
    'query' => $query2 
  ));
     
      $query1 = Doctrine_Query::create()


      ->from('Provincia p')

      ->where('p.departamento_id = ?',$cliente->getDepartamentoId());
   
    $this->widgetSchema['provincia_id'] = new sfWidgetFormPropelSelectAjax(array(
    'model' => 'Provincia',
    'method' => 'getProvincia',
    'query' => $query1, 
    'url' => 'cliente/distporprov',
      'update' => 'cliente_distrito_id',
      'update_element' => 'select'
  ));
     
      $this->widgetSchema['departamento_id'] = new sfWidgetFormPropelSelectAjax(array(
    'model' => 'Departamento',
    'method' => 'getDepartamento',
    'url' => 'cliente/provpordep',
      'update' => 'cliente_provincia_id',
      'update_element' => 'select',
      'add_empty' => 'Seleccione'
  ));
  }
 
}

y mi actions tiene lo siguiente:

class clienteActions extends autoClienteActions
{
    public function executeProvpordep(sfWebRequest $request)
    {
        $q = Doctrine_Query::Create()
            -> select('p.id,p.provincia')


            -> from('Provincia p')

            -> where('p.departamento_id = ?',$request->getParameter('id'));
          $this->provincia_list = $q->execute();         
    }
    public function executeDistporprov(sfWebRequest $request)
    {
        $q = Doctrine_Query::Create()
            -> select('d.id,d.distrito')
            -> from('Distrito d')
            -> where('d.provincia_id = ?',$request->getParameter('id'));
          $this->distrito_list = $q->execute();         
       
    }
}

y los templates:

distporprovSuccess.php

<?php
  $ret = '<option value = 0>...Seleccione</option>';
  for ($i = 0; $i < $distrito_list->count(); $i++)
  {
    $ret = $ret.'<option value='.$distrito_list[$i]['id'].'>'.$distrito_list[$i]['distrito'].'</option>';
  }
  echo $ret;
?>

provpordepSuccess.php

<?php
  $ret = '<option value = 0>...Seleccione</option>';
  for ($i = 0; $i < $provincia_list->count(); $i++)
  {
    $ret = $ret.'<option value='.$provincia_list[$i]['id'].'>'.$provincia_list[$i]['provincia'].'</option>';
  }
  echo $ret;
?>


Espero que sirva de ayuda.

Ahora estoy trabajando en el validate.

José Luis Vicente Caballero

Reply all
Reply to author
Forward
Message has been deleted
0 new messages