PHP - Ayuda MVC

 
Vista:
Imágen de perfil de JUAN

Ayuda MVC

Publicado por JUAN (2 intervenciones) el 31/01/2017 21:00:24
Estoy empezando con MVC y me he atascado con un ejercicio que es hacer un MVC simple sin base de datos, usando un array.
El modelo lo tengo terminado, seria este. modelo.php:

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
// modelo.php
 
function recoger_datos()
{
 
	$libros = array(
 
		0 => array(
 
			"titulo" => "Orgullo y Prejuicio",
			"autor" => "Jane Austen",
			"editorial" => "Planeta",
			"año_publicacion" => "1813"),
 
		1 => array(
			"titulo" => "El Conde de Montecristo",
			"autor" => "Alejandro Dumas",
			"editorial" => "Santillana",
			"año_publicacion" => "1844"),
 
		2 => array(
		    "titulo" => "Dracula",
			"autor" => "Bram Stoker",
			"editorial" => "Anaya",
			"año_publicacion" => "1897")
 
	);
 
	return $libros;
}
 
?>

El archivo index.php hace de controlador.

El ejercicio pide:
- La funcionalidad del controlador será llamar al modelo para recoger los tados y pasar estos datos a la vista para que se puedan representar.
- Crear la variable datos como array.
- Introducir en datos["titulo"] un título para la página.
- Llamar a la función recogerDatos(), que se deberá crear en el modelo, y almacenar el resultado en datos['libros'].
- Llamar a la función mostrarInformación($datos), que se deberá definir en la vista, para representar la información obtenida.

Y en vista.php:

- Crear la función mostrarDatos($datos = array()) para mostrar la información enviada por el controlador.
- El título enviado por el controlador debe aparecer en el título de la página, (head > title) y como cabecera de la misma (h1)
- Los datos aparecerán en una tabla que represente el listado de libros.

Alguna sugerencia?
Gracias de antemano.
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Ayuda MVC

Publicado por Mauro (1036 intervenciones) el 09/02/2017 00:24:27
No comprendo del todo dónde te has atascado. ¿Qué te genera dudas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juan

Ayuda MVC

Publicado por Juan (2 intervenciones) el 09/02/2017 10:42:45
Hola. Ya tengo el codigo casi resuelto, estoy atascado en el uso de un titulo de la pagina para mostrarlo en la vista, el uso de una constante, crear reglas y matar el proceso.

- Introducir en datos["titulo"] un título para la página. El título enviado por el controlador debe aparecer en el título de la página, (head > title) y como cabecera de la misma (h1)
- Crear una constante llamada CONTROLADOR con valor true. (en el index.php)
- Crear una regla en el fichero modelo.php y otra en el fichero vista.php para evitar que puedan ser llamados directamente
- Comprobar, en las primeras líneas de los ficheros, que está definida la constante CONTROLADOR. Si no está definida significará que se ha llamado al fichero sin pasar por el controlador. En ese caso, mostrar un mensaje de error indicando que no se puede llamar a ese fichero directamente y terminar la ejecución.
- Para terminar la ejecución, especialmente en la vista, debéis ejecutar un comando que "mate" el proceso php (die, en inglés)

te adjunto mi codigo.
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Ayuda MVC

Publicado por Mauro (1036 intervenciones) el 09/02/2017 19:41:12
Bueno, por lo que veo la parte de:

- Crear una constante llamada CONTROLADOR con valor true. (en el index.php)

La tienes resuelta :).

Por lo demás... me resulta un poco difícil seguir tu código... no veo que estés aplicando realmente el patrón MVC... ¿esto es un trabajo para la universidad?

Esta parte

- Crear una regla en el fichero modelo.php y otra en el fichero vista.php para evitar que puedan ser llamados directamente

Es lo mismo que:

- Comprobar, en las primeras líneas de los ficheros, que está definida la constante CONTROLADOR. Si no está definida significará que se ha llamado al fichero sin pasar por el controlador. En ese caso, mostrar un mensaje de error indicando que no se puede llamar a ese fichero directamente y terminar la ejecución.

La verificación que debes hacer es algo como:

1
2
3
if ( !defined('CONTROLADOR') ) {
	die ('No se puede entrar aqui!');
}
Aunque en tu caso, no veo la necesidad... los archivos estos sólo definen clases, no ejecutan nada...

Creo que con eso deberías andar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar