hidden_field_tag no pasa parametro

edited noviembre 2010 in Beta1
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

  • edited 12:18
    Bueno, aqui estoy de vuelta, les comento a quienes leyeron mi consulta que la he resuelto, habia un error en el controlador (a veces el cansancio nos venda los ojos) pido disculpas si alguien estaba intentando resolver mi problema.
    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!!!
  • edited 12:18
    va bien

    para limpiar un poco el controller y hacer mas efectivo el modelo yo ubicaria este if dentro del model
    if($filtro) {
    // Para lograr persistencia del filtro
    $this-&gt;filtro = $filtro;
    $this-&gt;listPersonal = $this-&gt;Personal-&gt;listaPersonalNombre($filtro,$page);
    } else {
    //Primera ejecucion o Sig Ant sin resultado filtrado	
    $this-&gt;filtro = '';
    $this-&gt;listPersonal = $this-&gt;Personal-&gt;listaPersonal($page);
    }
    
Sign In or Register to comment.