Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

select cakePhp

Estas en el tema de select cakePhp en el foro de Frameworks y PHP orientado a objetos en Foros del Web. soy principiante y mi problema es que la validación no se aplica en el objeto select, y es porque el campo siempre parece tener datos ...
  #1 (permalink)  
Antiguo 05/05/2009, 13:47
Avatar de yoxs  
Fecha de Ingreso: junio-2008
Mensajes: 46
Antigüedad: 16 años, 6 meses
Puntos: 0


soy principiante y mi problema es que la validación no se aplica en el objeto select, y es porque el campo siempre parece tener datos apesar de no seleccionar nada. que puedo hacer.

tengo esta validación en el modelo.

'state' => VALID_NOT_EMPTY,

y en la vista el objeto asi:

<label>State/Province:*</label><?php echo $form->select('User.state',$htm->getStatesArray(),null,array(),false); ?>

Última edición por yoxs; 05/05/2009 a las 15:39
  #2 (permalink)  
Antiguo 05/05/2009, 15:52
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: select cakePhp

Lee la documentación: http://api.cakephp.org/class/form-he...rmHelperselect
  #3 (permalink)  
Antiguo 05/05/2009, 16:02
Avatar de yoxs  
Fecha de Ingreso: junio-2008
Mensajes: 46
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: select cakePhp

Si ya lo habia analisado anteriormente, pero no he encontardo manera de que el select vaya nulo, olo necesario para que en el modelo se ha visto como campo vacio,

gracias de todos modos
  #4 (permalink)  
Antiguo 05/05/2009, 16:12
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: select cakePhp

Ahora que sé que has mirado la documentación te lo explico.
El último parámetro, $showEmpty, por defecto vale false. Esto quiere decir que no se mostrará una opción en blanco en el select.
Si queremos que se muestre una opción en blanco lo ponemos en true.
Código PHP:
<?php echo $form->select('User.state',$htm->getStatesArray(),null,array(),true); ?>
Si en vez de en blanco, queremos que aparezca algo por defecto, como "Selecciona una opción", le pasamos ese valor:
Código PHP:
<?php echo $form->select('User.state',$htm->getStatesArray(),null,array(),'Selecciona una opción'); ?>
Por cierto, en la versión 1.2, se puede usar el método input para generar la mayoría de los campos de un formulario. Por ejemplo, en el caso de los textarea automáticamente nos los detecta a partir del tipo de campo de la base de datos (text). Para según que otros tipos hay que pasar un array de opciones.
  #5 (permalink)  
Antiguo 05/05/2009, 16:37
Avatar de yoxs  
Fecha de Ingreso: junio-2008
Mensajes: 46
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: select cakePhp

lamentablemente desde antes habia probado eso, pero igual sigo con el problema.




Pienso que talvez es la forma en que lo valido, que me recomendarías en cuanto a eso,,,,?

gracias
  #6 (permalink)  
Antiguo 06/05/2009, 01:45
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: select cakePhp

Creo que ayer no leí con suficiente detenimiento tu mensaje, era tarde para mi. Ahora que lo leo con más tranquilidad no acabo de entenderlo.
En el modelo validas el select para que no pueda recibir un valor vacío, y eso es lo hace. Te obliga a que en el select escogas una opción.
Para ver información del error puedes incluir tras el select esto:
Código PHP:
echo $form->error('User.state'); 
Te mostrará información del error que se produce, si es que se produce.

Mírate en el manual la sección de validación: http://book.cakephp.org/view/125/Data-Validation. Usar VALID_NOT_EMPTY está bien, pero puede ser mucho más avanzado.
  #7 (permalink)  
Antiguo 07/05/2009, 09:27
Avatar de yoxs  
Fecha de Ingreso: junio-2008
Mensajes: 46
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: select cakePhp

Sorry por no explicarme bien, pero si es precisamente lo que dices, gracias con lo que me diste ahora
se que produce el mensaje, lo que pasa es que no con la aperiencia que los demas, pero ya se que la validación esta bien, ahora debo ver como logro que la apariencia se le aplique.

Parece que en ese mismo echo $form->error('User.state');
se puede incluir un array para la apariencia, al menos eso dice en el manual solo que no se usarlo muy bien, estoy averiguando, si me puedes orientar tambien te lo agradeceria,,,,y disculpa.

Última edición por yoxs; 07/05/2009 a las 09:55
  #8 (permalink)  
Antiguo 11/05/2009, 13:33
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 22 años, 1 mes
Puntos: 2
Respuesta: select cakePhp

Código PHP:
$form->input('state', array('label' => 'State/Province:*''options' => $htm->getStatesArray(), 'empty' => 'Selecciona una opción')); 
Si estas ocupando la estructura que entrega CakePHP en los elementos del formulario, debes tratar de usar siempre $form->input, este por defecto trae el label, los divs que encapsulan los elementos y el div de error con el mensaje en caso de que exista una validacion y esta arroje un error.

Ahora si quieres ocupar el metodo error del Helper Form, seria algo asi:
Código PHP:
echo $form->error('User.state'null, array('style' => 'loque quieras''class' => 'algunaclase''etc' => 'value-de-etc')); 
El primer parametro es el nombre del input, el segundo el texto (si quieres dejar el que pusiste en el modelo, pones null) y el ultimo son las opciones y atributos del div que muestra el error.

Saludos
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #9 (permalink)  
Antiguo 12/05/2009, 12:10
Avatar de yoxs  
Fecha de Ingreso: junio-2008
Mensajes: 46
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: select cakePhp

ok perfecto gracias
  #10 (permalink)  
Antiguo 05/09/2009, 23:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 42
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: select cakePhp

a todo este tema, tengo una duda amigos ... por ejemplo ... yo cargo un select con sus datos y con la opcion 'Escoja Opcion' agregada con la sgte sentencia ....

<?php
echo $form->input('estado_id',array('label'=>false,'empty'=>a rray('0'=>'Escoja Opción'),'type'=>'select','selected'=>'0'));
?>

El select me carga normalmente y funciona ..... escojo una opcion y todo va normal. Pero el detalle es que por ejemplo cuando recargo la pagina ... osea pulso F5 y el select no se vuelve a ubicar en la opcion 'Escoja Opcion', sino mas bien, recarga la pagina pero el select sigue apuntando a la ultima opcion escojida.

Lo que quiero es que vuelva a señalar a la opcion 'Escoja Opcion' como si fuera la primera vez que entran ahi.

Estoy poniendo mal algo ahi en mi sentencia??? ... no me funciona el 'selected' ???

Ya me lei la documentacion al respecto, incluso use 'default', pero nada :S

Agradezco su ayuda.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:50.