Estoy implementando y con bastante exito el pasaje de parametros al controlador con el uso de matrices por medio de la convencion "modelo.campo", pero me surgio un problema en un caso en el que tengo que cargar un valor en un campo en forma automatica para lo que antes utilizaba sin problemas el hidden_field_tag, pero ahora no funciono, lo hago mediante esta linea:
...
<?php echo hidden_field_tag(array('hijo.personal_id','value'=>'$idpersonal')); ?>
...
no da error para nada, solo que al controller llegan los demas datos (de los numeric y text_field_tag) pero este del hidden_field_tag llega NULL. He probado mediante un "echo" arriba de esta linea el valor de la variable $idpersonal y esta perfecto (no es nulo).
Tambien probe de usar un text_field_tag, me mostro el valor perfectamente pero NO LO PASO AL CONTROLLER y los otros que son como 12 pasaron!!!! Me parece que el problema debe estar en algun comportamiento que se genera al usar la propiedad "value" para asignar el valor. Los valores que se ingresan manuales pasan y ese no.
Ya no se me ocurre que probar.
Espero a ver si alguien sabe que puede estar pasando.
Desde ya muchas gracias.
Saludos!!!
Comentarios
Ahora queria mostrarles a los mas avanzados (quizas este no sea el tema adecuado pero quiero continuar el hilo) una porcion de codigo de la aplicacion que estoy desarrollando para ver si alguien lo resovio de manera mas sencilla.
Se trata de una simple lista paginada de registros con un form arriba para escribir un criterio de busqueda.
El tema era que los ejemplos que vi no paginaban el resultado de la busqueda si este era de muchos registros y yo queria paginarlo tambien, necesitaba que persista el criterio de busqueda en los enlaces <<Ant y Sig>>, si este existia. Lo resolvi de esta manera, les pego el modelo:
class Personal extends ActiveRecord
{
public function initialize() {
$this->belongs_to('Localidad');
}
public function listaPersonal($page, $ppage=10)
{
return $this->paginate("page: $page", "per_page: $ppage");
}
public function listaPersonalNombre($nombre, $page, $ppage=10)
{
$condiciones = " nombre LIKE '%{$nombre}%' ";
return $this->paginate($condiciones, "page: $page", "per_page: $ppage");
}
}
el controlador:
public function index($page=1,$filtro='')
{
//Trae una condicion recien escrita
if($this->has_post('nombre')){
$this->filtro = $this->post('nombre');
$this->listPersonal = $this->Personal->listaPersonalNombre($this->post('nombre'),$page);
} else {
//Apreto Sig o Ant y el resultado era filtrado
if($filtro) {
// Para lograr persistencia del filtro
$this->filtro = $filtro;
$this->listPersonal = $this->Personal->listaPersonalNombre($filtro,$page);
} else {
//Primera ejecucion o Sig Ant sin resultado filtrado
$this->filtro = '';
$this->listPersonal = $this->Personal->listaPersonal($page);
}
}
}
y la vista:
<?php echo View::content(); ?>
<h3>Personal</h3>
<table id="tabladetalle">
<?php echo form_tag('personal/index') ?>
<tr id="titulodetalle">
<th>Nombre</th>
<th></th>
</tr>
<tr>
<th><?php echo text_field_tag('nombre') ?></th>
<th><?php echo submit_tag('Consultar') ?></th>
</tr>
<?php echo end_form_tag() ?>
</table>
<?php echo 'Resultados con las condiciones:'.$filtro ?>
<table id="tabladetalle">
<tr id="titulodetalle">
<th>ID</th>
<th>Nombre</th>
<th>Localidad</th>
<th><?php echo link_to("personal/create",'Agregar'); ?></th>
</tr>
<?php foreach ($listPersonal->items as $item) :
$nombrelocalidad = $item->getLocalidad()->nombre;
print '<tr>';
print "<th> $item->id </th>";
print "<th> $item->nombre </th>";
print "<th> $nombrelocalidad </th>";
print '<th>'.link_to(array("personal/edit/$item->id/", 'Editar'))."</th>";
print '</tr>';
endforeach; ?>
<tr align="center">
<th align="center">
<?php if($listPersonal->prev) echo link_to(array("personal/index/$listPersonal->prev/$filtro", '<< Anterior |')); ?>
<?php if($listPersonal->next) echo link_to(array("personal/index/$listPersonal->next/$filtro", 'Próximo >>')); ?>
</th>
</tr>
</table>
demas esta decir que este codigo (sobre todo el de la vista es el priiiiimer borrador (despues lo limpio y queda barbaro <!-- s;) --><img src="{SMILIES_PATH}/icon_wink.gif" alt=";)" title="Wink" /><!-- s;) -->. Asi como lo ven funciona bien, solo como dije anteriormente quiero una opinion de los que mas saben del framework a fin de saber si hay manera mas sencilla de hacerlo.
Muchas Gracias!!!
Saludos cordiales!!!
para limpiar un poco el controller y hacer mas efectivo el modelo yo ubicaria este if dentro del model