Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/10/2010, 15:24
Avatar de maturano
maturano
 
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 10 meses
Puntos: 36
Respuesta: CodeIgniter. Mostrar valor de un array dentro de un modelo

Cita:
Iniciado por rogertm Ver Mensaje
mostrar un mensaje cada vez que se haya enviado un formulario de inserción de datos a la BD...
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?.


Cita:
Iniciado por rogertm Ver Mensaje
Y para no crear una vista para cada tipo de mensaje, pues pensé que esta era la mejor forma, y en efecto así lo sigo creyendo...
Y no lo dudo, y funciona, y si te di respuesta --que que bueno que te sirvió-- es porque técnicamente es posible, pero va en contra del patrón MVC.

Como mencioné, solo di una mirada a CI y me pareció, más que un framework, una colección de clases precisamente por ello te lo venden como un framework flexible. Igual no es por echarle la culpa al framework ... con los conceptos bien definidos ...

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. }

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 así queda en la vista lo que es de la vista . No sé, repito que, como framework, CI debería tener su "guía de buenas prácticas", pero mientras te enteras y lees sobre el patrón MVC, estas alternativas me parecen, en mi muy humilde opinión, mejor a lo que ahora pretendes.

Mis 2 centavos :-/.
__________________
I ♥ The Music!