Help con Vista Helpers!

Hola a todos, otro problema.

Estoy haciendo un formulario del que quiero recoger los datos para guardarlos en la base de datos y, a excepción del text_area_tag y del select_tag, no hay forma de recoger los valores introducidos: ni con el date_tag, ni con el checkbox_tag... Poniendo chivatos he visto que el valor que se obtiene del formulario en la fecha es NULL. ¿Qué estoy haciendo mal?

vista nuevo_articulo.phtml
<?= form_tag("articulo/crear_articulo") ?> 
	Descripción: <?= textarea_tag("descripcion", "rows: 10", "cols: 50") ?><br>
	Fecha: <?= date_field_tag("fecha") ?><br>
	Nuevo: <?= checkbox_field_tag("nuevo") ?><br>
	Idioma: <?= select_tag("idioma") ?>
				<?= option_tag("0", "Spanish", "selected: true") ?> 
				<?= option_tag("1", "English") ?> 
				<?= option_tag("2", "French") ?> 
				<?= option_tag("3", "German") ?> 
			</select> <br>
	
	<?= submit_tag("Enviar") ?> 
<?= end_form_tag() ?>


articulo_controller.php
public function crear_articulo () {
	$this->set_response("view");
		
	$Articulo = new Articulo();
	$Articulo->descripcion = $this->request('descripcion'); //Funciona
	$Articulo->fecha = $this->request('fecha'); //No funciona
	$Articulo->nuevo = $this->request('nuevo'); //No funciona
	$Articulo->idioma = $this->request('idioma'); //Funciona
	$Articulo->create();
}

De todo esto, a la base de datos sólo llegan la descripción y el número que representa el idioma. El campo fecha de la base de datos es del tipo date, y el campo nuevo es un tinyint(1).

Gracias y feliz año nuevo.

Comentarios

  • edited 12:35
    Para que cuando no ingreses una fecha, te guarde el valor de la fecha actual por defecto, debes decircelo explicitamente en el campo;
    <?=date_field_tag("fecha","value: ".date("Y-m-d")) ?>

    para el checkabox, recuerda que el valor que obtienes es un true (en caso de que este activado) y un false ( en caso de que este desactivado),osea, es booleano, y el campo "nuevo" que le corresponde en la bd es un tinynit de 1, por tanto antes de guardar en la bd debieras preguntar si es true o false y depende se eso es el valor que guardarias en la bd.... ejm

    $valor_nuevo=$this->request("nuevo");
    if ($valor_nuevo == true){
    $Articulo->nuevo =1;
    }
    espero haberte ayudado.
  • edited 12:35
    Muchas gracias, Paula.

    Lo del checkbox me ha funcionado... más o menos. Si está marcado me sale como false, y si no, como true. <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: --> Debería ser al revés, ¿no? Pero a mí me sirve.

    Lo de la fecha, no era ése mi problema, sino que no capta ninguna fecha que le ponga. Si dejo el código como lo tenía, me sale SIEMPRE null, y si le pongo lo que me has dicho, me pone SIEMPRE la fecha de hoy, ponga yo lo que ponga.

    ¿Alguna idea?

    Editado: Espera, corrijo! Lo del checkbox no hace exactamente lo que he dicho. Una vez que ha marcado 1 ya le da igual lo que le ponga, me sigue poniendo 1 siempre. Podría ser un problema de caché, pero entonces tampoco funcionaría bien el textarea, y ése sí que cambia cuando modifico su contenido.
Sign In or Register to comment.