Espero que hayáis instalado y probado Hangman tal y como lo hemos visto en el anterior post. Ahora quiero exponer una primera y sencilla vision de como funciona Yii, o mas bien, que hechos van a tener importancia para que se muestre las pagina que invocáis.

Supongamos que escribís en vuestro navegador

http://localhost/hangman/

Apache invocará al fichero default (normalmente index.php) que se encuentre en esa carpeta. Para responder cualquier petición, yii solo dispone de ese fichero;  en la linea 7 de ese fichero, os encontráis con la instrucción que arranca Yii.

Yii::createWebApplication($config)->run();

El método run() de Yii comprobará que en la URL no le habéis pasado ningún parámetro, de forma que utiliza la información facilitada en el fichero protected/config/main.php, concretamente

‘defaultController’=>’game’,

buscará la pagina GameController.php en el directorio protected/controllers, y la cargará, inicializando la clase GameController que define ese fichero.

El siguiente paso es buscar en la URL por si se ha indicado alguna acción, como no es así, utiliza el valor de GameController->defaultAction para llamar al método  de esta clase que se indique. Esta cadena, la podemos definir en cualquier controlador, para indicarle cual es su acción por defecto, cuando en la URL no se indica.

En nuestro ejemplo, se ha indicado el metodo «play», con lo que Yii  construye el nombre del método anteponiendo al nombre indicado la palabra «action», por lo que lanzará

GameController->actionPlay

lo que sigue es puro PHP, teniendo en cuenta que nuestra clase hereda métodos y propiedades de la clase CController del framework,

Cuando haya finalizado la generación de información y quiera presentar la página de respuesta, utiliza precisamente un método heredado

$this->render(‘guess’)

o

$this->render(‘play’,$params);

Este método utiliza el primer parámetro para buscar un fichero con ese nombre ( y extensión php) el la carpeta protected/views/<nombre del controlador>, en nuestro ejemplo esta buscando los ficheros en protected/views/game

Y aquí llegamos al siguiente nivel «VISTA». En este fichero deberíais tener todo lo que se debe presentar y como se debe presentar.

Dado que el contenido de este fichero se ejecuta dentro de GameController, disponéis de toda la información del controlador (el $this, se refiere precisamente al controlador), aunque desde aquí, solo debéis utilizar los datos, ya que la responsabilidad para operar con ellos, se la habéis de dejar al Controlador.

Continuando con el tema de la VISTA, tengo que aclarar que la informacion que genera las instrucciones de vuestro fichero, se presentan dentro de otro fichero que Yii va a llamar de forma automática (ya veremos como controlar ese comportamiento)

Cuando se invoca el metodo render, se inicia la ejecucion de protected/views/layout/main.php y a vuestro fichero no se le llamará hasta que encuentre una linea con:

<?php echo $content; ?>

Esta linea se sustituirá con tolo lo que genere vuestro fichero de VISTA.

Realmente, cuesta mas explicarlo que entenderlo. Acepto sugerencias para mejorar el entendimiento de todo esto. También deciros que esto es una visión simplista (muy simplista) de como funciona yii pensada únicamente para que empecéis a tener una idea de donde están los ficheros a modificar

Y ahora, os queda a vosotros el trabajo de revisar todos estos directorios y ficheros, os animo a que intentéis modificar el juego, traduciéndolo, o creando alguna función nueva, para ello, solo seria necesario llamar al juego pasando las acciones que queráis.

Vamos a ver como se construye en este momento las URLs. Por ejemplo:

http://localhost/hangman/index.php/game/guess/E

Esta linea llamara al controlador GameController, concretamente al método «actionGuess y le pasará como atributo «E»

Si queréis crear una función para abandonar el juego, deberíais:

  • Crear en GameController un método que podríamos llamar «actionAbandonar»
  • dentro de ese método,  podemos llamar a $this->render(‘abandonar’)
  • y creamos en protected/views/game/ un fichero abandonar.php en el que podemos escribir «<h1>Adiossssss!!!!!!</h1>

luego solo deberéis crear un enlace o escribir en vuestro navegador

http://localhost/hangman/index.php/game/abandonar

y la magia se hará

 

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.