Primero, nunca había trabajado POO, ni MVC ni Framework alguno... todo esto es nuevito para mi
Cita:
Iniciado por maturano 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 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 originalclass Controller
{
public function action()
{
$model = new Model();
// ...
// .. o try {} catch() {}
if ($model->save()) {
$var['msg_result'] = $this->_resultMsg('success');
} else {
$var['msg_result'] = $this->_resultMsg('fail');
}
$this->load->view('vista', $var);
}
private function _resultMsg($event)
{
'success' => 'El formulario ha sido enviado',
'fail' => 'Hubo un error en el envío del formulario',
);
return $msgs[$event];
}
}
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 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<div class='msg'>
<?php
if ($form_result) {
echo'El formulario se ha enviado con éxito';
} else {
echo 'Error al enviar el formulario';
}
?>
<?php echo anchor(current_url(), 'Regresar...') ?>
</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 Mis 2 centavos :-/.
Ya no puedo karmarte más
Gracias por todo...