Codeigniter: configuración del valor del formulario para una página de edición

Estoy tratando de hacer una página de edición donde los campos del formulario se completan desde la base de datos. Estoy tratando de hacer que funcione simplemente configurando un texto aleatorio, pero tengo problemas para que se muestre.

Tengo lo siguiente en mi controlador:

public function edit($item_id) {

    $this->data['title'] = "Edit Item";

    $this->data['item_title'] = array(
        'name' => 'item_title',
        'id' => 'item_title',
        'type' => 'text',
        'value' => 'a title',
      );

      $this->data['url_slug'] = array(
        'name' => 'url_slug',
        'id' => 'url_slug',
        'type' => 'text',
        'value' => 'some-url-slug',
      );

    $this->template->build('admin/item/form', $this->data);
  }

Esta es mi opinión:

<?php echo form_open('admin/item/update_item', array('id' => 'item_form')); ?>

<input type="text" name="item_title" value="<?php echo set_value('item_title'); ?>" id="item_title" placeholder="Enter a title..."/>

<input type="text" name="url_slug" value="<?php echo set_value('url_slug'); ?>" id="url_slug" placeholder="url-slug-of-the-item"/>

Cuando voy a la página /editar/id, el marcador de posición todavía se muestra y el valor está en blanco. ¿Por qué no se configura? Funciona bien cuando lo uso para la validación de formularios.

preguntado el 27 de julio de 12 a las 20:07

item_title y url_slug están arrays pero value el atributo debe ser de cadena. -

3 Respuestas

Todavía soy nuevo en codeigniter, así que perdonen mi ignorancia.

¿No puedes simplemente usar lo siguiente?

<input type="text" name="item_title" value="<?= $item_title['value'] ?>" id="item_title" placeholder="Enter a title..."/>

Nota: Esto sería válido para fuelphp; no estoy 100% seguro acerca de codeigniter.

Respondido 27 Jul 12, 20:07

ya, esto podría funcionar. Estoy tratando de usar la misma vista para crear y editar, así que estoy tratando de usar set_value si es posible. - Motive

@MotiveKyle independientemente, está usando set_value() en una matriz, en lugar del índice de su valor. Intenta aquí: stackoverflow.com/questions/3071774/… - Matt

Terminé deshaciéndome de la matriz y simplemente haciendo $this->data['item_title'] = 'some title'; en el controlador, y en la vista, set_value en realidad acepta un segundo parámetro, como este:

<?php echo set_value('item_title', $item_title); ?>

Esto funciona, aunque recibo advertencias si la variable no existe, así que necesito declararlas todas.

Respondido 27 Jul 12, 21:07

Terminé deshaciéndome de la matriz y simplemente haciendo $data['fullName'] = 'some title'; en el controlador, y en la vista, set_value en realidad acepta un segundo parámetro, como este:

<?php    
   if(!isset($fullname)) {
        $fullname = set_value('fullName');   
   }

   echo form_open(base_url() . "broker/practice_send.html");

   echo form_label("Name", "name");
   $data = array(
      'name'     => 'fullName',
      'id'       => 'name',
      'value'    => set_value('fullName', $fullname)
   );
   echo form_input($data);

?>

Respondido el 17 de enero de 14 a las 18:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.