PHP - Como redirigir en mvc, uso ajax?

 
Vista:
sin imagen de perfil
Val: 62
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por giuli (74 intervenciones) el 25/04/2018 20:10:25
Soy nuevo en MVc y baje un tutorial y a la vez busco en google..

Tengo un archivo index que incluye el controlador y los modelos..

1
2
3
4
5
6
7
require_once "controllers/controller.php";
require_once "models/model.php";
 
$mvc = new MvcController();
$mvc -> plantilla();
 
?>

entonces el controler crea la plantilla y espera un click no cierto?
de ahi tengo una lista desplegable un menu arriba con 4 opciones y submenu..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<ul>
    <li><a href="">ABM</a>
    <ul id="submenu">
        <li><a href="">Clientes</a></li>
        <li><a href="">Articulos</a></li>
        <li><a href="">Proveedores</a></li>
      </ul>
    </li>
    <li><a href="">Nuevo comprobante</a>
    <ul id="submenu">
        <li><a href="">Ticket</a></li>
        <li><a href="">Factura A</a></li>
    </ul>
    </li>
    <li><a href="#">Estado de cajas</a>
      <ul id="submenu">
        <li><a href="">Chequera</a></li>
        <li><a href="">Cerrar caja</a></li>
        <li><a href="">Posnet</a></li>
      </ul>
    </li>
    <li><a href="">Busqueda Padron</a></li>
    <li><a href="">Compra de stock</a></li>
  </ul>

Entonces href lo deje vacio para utilizar justamente el mvc...

el modelo toma la accion del usuario y redirige..entonces

debo usar ajax o javascript para tomar el click del submenu y enviarlo al modelo??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por abzerox (157 intervenciones) el 26/04/2018 06:15:22
Hola giuli, me parece que te has confundido un poco los conceptos, el Controller es el encargado de actuar como mediador entre el Modelo y la Vista, es decir, es quien recibe la petición del usuario y en base a esta o bien devuelve una Vista (la parte visible, interfaz de usuario) o le indica al Modelo (encargado de la logica de negocio, acceso a datos) que realiza alguna acción/peticion a la base de datos, para luego con estos devolver nuevamente una respuesta, ya sea una vista o simplemente datos que luego podran ser procesados, (Envidos como respuesta al navegador vía Ajax en formato JSON o XML, o simplemente html).

No es necesario dejar el atributo href vacío para poder utilizar MVC, de hecho no tiene relación alguna con el patrón.
Ahora si lo que quieres es realizar, como comentas una petición vía Ajax cada vez que sea haga click en alguno de los enlaces del submenu, deberas primero capturar el evento click de los elnaces, luego tomar el valor del atributo href (por eso su importancía, además de no ser una buena practica dejarlo vacío), después realizar la petición al controller (y no al modelo, por lo dicho arriba), luego este procesa la petición y envia los datos requeridos como respuesta. Todo este proceso siempre y cuando la petición se realize de forma asincrona - Ajax.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 62
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por giuli (74 intervenciones) el 28/04/2018 14:31:40
por eso te decia:
en controller tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
class MvcController{
 
	#LLAMADA A LA PLANTILLA
	#----------------------------------------------
 
	public function plantilla(){
 
		#include() Se utiliza para invocar el archivo que contiene código html.
		include "views/template.php";
	}
 
	#INTERACCIÓN DEL USUARIO
	public function enlacesPaginasController(){
 
		if(isset($_GET["action"])){
 
		$enlacesController = $_GET["action"];
 
		}
 
		else{
 
		$enlacesController = "index";
 
		}
 
		$respuesta = EnlacesPaginas::enlacesPaginasModel($enlacesController);
 
		include $respuesta;
 
	}
}

pero como mando el get para que controler redirija?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por abzerox (157 intervenciones) el 29/04/2018 11:41:17
Debes tener un unico punto de entrada en tu aplicación. Este seria por ejemplo tu archivo index. Desde este deberas realizar el ruteo el dispatch, dependiendo de la ruta solicitada. Una forma correcta y como yo lo haria seria utilizando urls amigables con el modulo rewrite rule de apache y alguna configuración más.
Pero una solución para tu código podria ser utilizar la variable $_GET['action'] y dependiendo del valor de esta, será la plantilla/datos devueltos.

Por ejemplo:

index.php

1
2
3
4
5
<?php
require_once "models/model.php";
require_once "controllers/controller.php";
MvcController::plantilla();
MvcController::index();

controller.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MvcController
{
    public static function index()
    {
        $enlacesController = isset($_GET["action"]) ? $_GET["action"] : 'index';
        $respuesta = EnlacesPaginas::enlacesPaginasModel($enlacesController);
        require_once $respuesta;
    }
 
    public static function plantilla()
    {
        include "views/template.php";
    }
}

Menú
Los enlaces del menú, deberian quedar más o menos así
1
<a href="index.php?action=clientes">Clientes</a>

Si no entiendes la idea, comenta. Y si puedes comparte el código del model.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 62
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por giuli (74 intervenciones) el 29/04/2018 22:19:54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
class EnlacesPaginas{
 
	public function enlacesPaginasModel($enlacesModel){
 
		if($enlacesModel == "listarCliente" ||
		   $enlacesModel == "servicios" ||
		   $enlacesModel == "contactenos"){
 
			$module = "views/modules/".$enlacesModel.".php";
 
		}
 
		else if($enlacesModel == "index" ){
 
			$module = "views/modules/inicio.php";
 
		}
 
		else{
 
			$module = "views/modules/inicio.php";
 
		}
 
		return $module;
 
	}
 
}
 
?>

ese es model.php pero no me funcion como vos decis aunque no da error de localizacion del archivo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por abzerox (157 intervenciones) el 30/04/2018 10:34:52
Hola, hice un sencillo y básico ejemplo del patrón MVC. Comparto el código del mismo.
Para probarlo debes ingresar a mvc/public/index.php, la clave del ruteo esta en la utilización de la variable
1
$_GET['url']
, es decir que para entrar por ejemplo a la sección de clientes debes ingresar mvc/public/index.php?url=clientes.
Fijate en el archivo App/Libraries/Routes.php y confing/routes.php, haz las pruebas que quieras, modificalo a tu manera.

Si tienes alguna duda comentanos, si quieres puedo hacer un ejemplo más completo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 62
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como redirigir en mvc, uso ajax?

Publicado por giuli (74 intervenciones) el 30/04/2018 15:07:37
Gracias por tu trabajo..

No sera que en mi caso falta llamar a
1
$mvc->enlacesPaginasController();

en el index? ese metodo no es invocado en ninguna parte, probe y me muestra la pagina pero conserva la portada de la pagina..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar