Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/10/2010, 13:20
Avatar de rogertm
rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: CodeIgniter. Mostrar valor de un array dentro de un modelo

Primero, nunca había trabajado POO, ni MVC ni Framework alguno... todo esto es nuevito para mi

Cita:
Iniciado por maturano Ver Mensaje
Y, tal cual tus palabras, esa no debería ser una responsabilidad del modelo. Mostrar un mensaje dependiendo de un evento, ¿no por suena a una actividad de la vista y/o del controlador?.
Bueno, según entiendo, el modelo es donde tengo mis datos, ya sea en consultas a la BD o lo que sea... Entonces en este modelo almaceno en un array las posibles respuestas para cada formulario (como si las almacenara en una BD, ¿no?) y las muestro dependiendo de lo que desee o donde necesite. A ver si me puedo explicar mejor, tengo un formulario de inserción de usuario (registros) en la BD, cuando ese formulario es enviado con éxito, muestro un mensaje que dice: El usuario ha sido insertado correctamente. pero puedo tener otro formulario que es para ingresar documentos y en este mostraría uno que diga: El documento ha sido guardado correctamente.

Lo que persigo es personalizar un poco el asunto, pues todo esto es para un sistema de gestión de documentos que tengo que hacer en mi trabajo, y todos estos formularios son parte de un back-end que lo usarían las personas encargadas de llenar la BD para que los usuarios finales (público en general) accedan a ellos en el front-end...

Cita:
Iniciado por maturano Ver Mensaje
Como sea, a lo que voy es que CI debería tener helpers, plugins ... o la definición de funciones y/o métodos en la clase. Ya habrá que leer la documentación para entender su arquitectura, pero esto que haces, no me parece adecuado. En todo caso, ¿no puedes declarar un método privado en un controlador?. Algo como:

Código PHP:
Ver original
  1. class Controller
  2. {
  3.     public function action()
  4.     {
  5.         $model = new Model();
  6.         // ...
  7.  
  8.         // .. o try {} catch() {}
  9.         if ($model->save()) {
  10.             $var['msg_result'] = $this->_resultMsg('success');
  11.  
  12.         } else {
  13.             $var['msg_result'] = $this->_resultMsg('fail');
  14.         }
  15.  
  16.         $this->load->view('vista', $var);
  17.     }
  18.  
  19.     private function _resultMsg($event)
  20.     {
  21.         $msgs = array(
  22.             'success' => 'El formulario ha sido enviado',
  23.             'fail'   => 'Hubo un error en el envío del formulario',
  24.         );
  25.  
  26.         return $msgs[$event];
  27.     }
  28. }
Yep... me toca leer a profundidad la documentación, pero como te he dicho, esta es mi primera vez y no lo puedo aprender todo el mismo día...

En cuanto a crear un método en el controlador, lo pensé, pero me di cuenta que voy a necesitar de estos mensajes en varios formularios o lo que es igual, en varios controladores, es por eso que decidí usar un modelo y acceder a él cada vez que lo necesite, no sé si me captas la idea ahora

Cita:
Iniciado por maturano Ver Mensaje
Código quizá sin sentido y con el que tampoco estaría de acuerdo, pero creo es mejor alternativa que colocar esta lógica en el Modelo. Incluso, ¿qué no puedes hacer una simple bifurcación en tu vista?; ahora que veo manejas código PHP directo... ¿qué te impide hacer algo como ...

Código PHP:
Ver original
  1. <div class='msg'>
  2.           <?php
  3. if ($form_result) {
  4.     echo'El formulario se ha enviado con éxito';
  5. } else {
  6.     echo 'Error al enviar el formulario';
  7. }
  8.           ?>
  9.           <?php echo anchor(current_url(), 'Regresar...') ?>
  10.       </div>
Y es justo eso lo que no quiero, hacer una vista para cada mensaje de formulario enviado con éxito, lo guardo todo en el modelo, lo manejo con el controlador (individual para cada formulario) y lo muestro siempre usando una sola vista... ¿O no?

Cita:
Iniciado por maturano Ver Mensaje
Mis 2 centavos :-/.
Ya no puedo karmarte más

Gracias por todo...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose