Foros del Web » Programando para Internet » PHP »

Hola amigos me estoy iniciando en el modelo vista controlador y me ha surgido una dud

Estas en el tema de Hola amigos me estoy iniciando en el modelo vista controlador y me ha surgido una dud en el foro de PHP en Foros del Web. Hola amigos me estoy iniciando en el modelo vista controlador y me ha surgido una duda que no se como resolver. Yo tengo tres archivos ...
  #1 (permalink)  
Antiguo 17/05/2011, 13:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 12 años, 10 meses
Puntos: 11
Hola amigos me estoy iniciando en el modelo vista controlador y me ha surgido una dud

Hola amigos me estoy iniciando en el modelo vista controlador y me ha surgido una duda que no se como resolver. Yo tengo tres archivos en uno esta el modelo con toda la lógica de negocio(funciones), en otro la vista(presentación) y en otro el controlador. Mi duda es la siguiente, dependiendo de la pagina de la que venga o la opción elegida por el usuario el controlador llama a una u otra función del modelo y deriva a una u otra pagina de la pagina web. Esto ultimo lo hago con un switch que recibe una variable por método get. La cosa es que no lo veo muy seguro y me parece un poco desordenado. Me podéis dar consejo de como hacerlo, gracias.

El motivo de haber puesto el texto en el titulo es que no me dejaba publicar con un titulo razonablemente amplio, por favor mirar haber que pasa con eso.
  #2 (permalink)  
Antiguo 17/05/2011, 13:31
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 11 años, 8 meses
Puntos: 334
Respuesta: Hola amigos me estoy iniciando en el modelo vista controlador y me ha surg

pues es básicamente eso... ahí cada vez vas implementando mejoras o diferentes ideas dependiendo de lo que necesites.

te dejo mi controller por si te sirve para sacar alguna duda.


saludos.


Código PHP:
<?php
/**
 * Khaus Framework
 *
 * LICENSE
 *
 * This source file is subject to the Public license Creative Commons LPCC
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * [url]http://creativecommons.org/licenses/by-nc/2.0/cl/[/url]
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to [email][email protected][/email] so we can send you a copy immediately.
 *
 * @category    Khaus
 * @package     Khaus
 * @copyright   Copyright (c) 2010 - 2011, Khaus Corp. Chile [[email protected]]
 * @license     Atribución-Licenciar Igual 2.0 Chile. CC BY-NC 2.0
 * @version     6:20110121
 */

class Khaus_Controller
{
    protected 
$_className;
    protected 
$_methodName;

    public function 
__construct()
    {
        
$request = new Khaus_Controller_Request();
        
$request $request->getRequest();
        
$this->_className $this->_getClassName($request[0]);
        
$this->_methodName $this->_getMethodName($request[1]);
        
$this->_makeResponse();
    }

    private function 
_makeResponse()
    {
        
$className $this->_className;
        
$methodName $this->_methodName;
        
// construyo la ruta donde deberia estar la class
        
$classLocation APPLICATION_PATH '/controllers/' $className '.php';
        
        
// si la class existe
        
if (is_file($classLocation)) {
            require_once 
$classLocation;
            
            
// registro los nombres de class y method
            
Khaus_Pattern_Registry::add('className'$className);
            
Khaus_Pattern_Registry::add('methodName'$methodName);
            
            if (
method_exists($className$methodName)) { // si la accion existe.. (metodo)
                
$class = new $className// instancio la class
                
$class->$methodName(); // ejecuto el metodo
                
$this->_response $class->templateRender(); // obtengo el template procesado
            
} else {
                throw new 
Khaus_Exception("Metodo $methodName no existe"404);
            }
        } else {
            throw new 
Khaus_Exception("$className no encontrado"404);
        }
    }

    public function 
getResponse()
    {
        return 
$this->_response;
    }

    private function 
_getClassName($request)
    {
        if (empty(
$request)) {
            
$request 'index';
        }
        return 
ucfirst($request) . 'Controller';
    }
    
    public function 
_getMethodName($request)
    {
        if (empty(
$request)) {
            
$request $this->_className;
            
$request str_replace('Controller'''$request);
        }
        return 
strtolower($request) . 'Action';
    }
}
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 17/05/2011, 13:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 12 años, 10 meses
Puntos: 11
Respuesta: Hola amigos me estoy iniciando en el modelo vista controlador y me ha surg

Gracias Hidek 1, el problema que tengo es que no me gustaría utilizar el método get, por las inseguridades y me gustaría opinión para otras alternativa, si me explicaras tu código me ayudaría un poco mas a entender esto, gracias.
  #4 (permalink)  
Antiguo 17/05/2011, 13:49
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 11 años, 8 meses
Puntos: 334
Respuesta: Hola amigos me estoy iniciando en el modelo vista controlador y me ha surg

método get por las inseguridades ?... pues es bastante extraño lo que dices..
podrías explayar mas esa idea ?...
y por lo de explicar el código.. en realidad solo basta leerlo.. obtengo 2 variables de la URL la primera la asocio con el nombre de la clase y la segunda con el método.. si el nombre no existe por defecto llama al index !

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 17/05/2011, 14:05
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 13 años, 5 meses
Puntos: 845
Respuesta: Hola amigos me estoy iniciando en el modelo vista controlador y me ha surg

Que tal trevol,

Lo que se suele utilizar es un router, que es el encargado de descomponer el URI y en base a esto determinar que controller-action ejecutar, te dejo un link a uno, también podes mirar como lo hacen los diferentes FW's para darte idea.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 18/05/2011, 03:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 12 años, 10 meses
Puntos: 11
Respuesta: Hola amigos me estoy iniciando en el modelo vista controlador y me ha surg

Gracias hidek 1 y masterpuppet, seguire investigando haber si me aclaro.

Etiquetas: controlador, modelo, vistas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:14.