Advertisement
  1. Code
  2. Yii

Cómo programar con Yii2: Uso de plantilla avanzada de la aplicación

Scroll to top
Read Time: 10 min
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: AuthClient Integration With Twitter & Google
How to Program With Yii2: Google Authentication

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Si está preguntando, "¿Qué es Yii?" Echa un vistazo a Introducción al Framework Yii, que revisa los beneficios de Yii e incluye una visión general de Yii 2.0.

En esta serie de programación con Yii2, estoy guiando a los lectores en el uso de la Yii2 Framework de PHP. A medida que empiece a utilizar Yii para el desarrollo real, es posible que desee iniciar su siguiente proyecto con la plantilla avanzada de la aplicación . Entre otras cosas, ofrece funciones integradas de administración de usuarios, así como dos aplicaciones, una para el usuario y la otra, un back-end administrativo.

En este tutorial, te presentaré a la plantilla avanzada de Yii2 y te guiará a través de la configuración básica y el uso. Mientras que en Programación con Yii2: Integración de registro de usuario exploró la implementación de la gestión de usuarios en la parte superior de la plantilla básica con la extensión de usuario Yii2, este tutorial lanzará un nuevo repositorio con la plantilla avanzada en lugar de continuar los ejemplos en nuestra base Yii código base.

Antes de empezar, por favor recuerde, intento participar en las discusiones de los comentarios. Si tiene una pregunta o sugerencia de un tema, por favor, envíe un comentario o póngase en contacto conmigo en Twitter @reifman. También puede enviarme un correo electrónico directamente.

Si notaste que hubo un retraso en esta serie, es porque recién he vuelto de una cirugía cerebral. Gracias por tu paciencia y apoyo—Es bueno estar escribiendo de nuevo regularmente y estoy deseando continuar con la cobertura de Yii2.

Cómo es diferente la plantilla avanzada

La razón más útil para migrar a la plantilla avanzada es la implementación de las funciones de administración de usuarios, como las de inicio de sesión, registro, cierre de sesión y restablecimiento de contraseñas.

La plantilla avanzada también proporciona varios árboles de acceso para una aplicación web más grande. Cuenta con una aplicación web front-end y back-end para usuarios finales y administradores. Sin embargo, esto también podría ampliarse—por ejemplo, para moderadores o una API especial, aunque hay otras maneras de integrar estas características en una aplicación.

Aquí hay un gráfico que muestra las principales diferencias entre la básica Yii y la instalación avanzada:

Yii2 Advanced Template Comparison with Basic TemplateYii2 Advanced Template Comparison with Basic TemplateYii2 Advanced Template Comparison with Basic Template

En mis últimos tutoriales sobre la extensión de usuario de Yii2, estoy cada vez más impresionado con su conjunto de funciones como una alternativa a la plantilla avanzada. Sin embargo, también puede integrarse fácilmente en cualquiera de las dos instalaciones.

Vale la pena explorar la plantilla avanzada antes de comenzar un proyecto importante. Estoy por ayudarte a hacer eso.

Instalación de la plantilla avanzada

Comencemos a instalar la plantilla avanzada con Yii2. Podemos seguir las instrucciones en el proyecto de plantilla avanzada en GitHub.

Actualizando Composer

En primer lugar, nos aseguraremos de que composer tenga los paquetes que necesita:

1
$ composer global require "fxp/composer-asset-plugin:~1.0.3"
2
3
Changed current directory to /Users/Jeff/.composer
4
./composer.json has been updated
5
Loading composer repositories with package information
6
Updating dependencies (including require-dev)
7
Nothing to install or update
8
Generating autoload files

Instalación de Yii con la plantilla avanzada

Entonces, podemos instalar Yii con la plantilla avanzada de proyecto . Vamos a llamar a nuestra aplicación tutorial yiiplus:

1
$ composer create-project --prefer-dist yiisoft/yii2-app-advanced yiiplus
2
Installing yiisoft/yii2-app-advanced (2.0.6)
3
  - Installing yiisoft/yii2-app-advanced (2.0.6)
4
    Loading from cache
5
6
Created project in yiiplus
7
Loading composer repositories with package information
8
Installing dependencies (including require-dev)
9
  - Installing yiisoft/yii2-composer (2.0.3)               
10
    Loading from cache
11
12
  - Installing ezyang/htmlpurifier (v4.6.0)
13
    Loading from cache
14
15
  - Installing cebe/markdown (1.1.0)
16
    Loading from cache
17
18
  - Installing bower-asset/jquery (2.1.4)
19
    Loading from cache
20
21
  - Installing bower-asset/jquery.inputmask (3.1.63)
22
    Loading from cache
23
24
  - Installing bower-asset/punycode (v1.3.2)
25
    Loading from cache
26
27
  - Installing bower-asset/yii2-pjax (v2.0.4)
28
    Loading from cache
29
30
  - Installing yiisoft/yii2 (2.0.6)
31
    Loading from cache
32
33
  - Installing swiftmailer/swiftmailer (v5.4.1)
34
    Loading from cache
35
36
  - Installing yiisoft/yii2-swiftmailer (2.0.4)
37
    Loading from cache
38
39
  - Installing yiisoft/yii2-codeception (2.0.4)
40
    Loading from cache
41
42
  - Installing bower-asset/bootstrap (v3.3.5)
43
    Loading from cache
44
45
  - Installing yiisoft/yii2-bootstrap (2.0.5)
46
    Loading from cache
47
48
  - Installing yiisoft/yii2-debug (2.0.5)
49
    Loading from cache
50
51
  - Installing bower-asset/typeahead.js (v0.10.5)
52
    Loading from cache
53
54
  - Installing phpspec/php-diff (v1.0.2)
55
    Loading from cache
56
57
  - Installing yiisoft/yii2-gii (2.0.4)
58
    Loading from cache
59
60
  - Installing fzaninotto/faker (v1.5.0)
61
    Loading from cache
62
63
  - Installing yiisoft/yii2-faker (2.0.3)
64
    Loading from cache
65
66
Writing lock file
67
Generating autoload files

Inicializando nuestra aplicación Yii

Ahora, vamos a inicializar nuestra aplicación:

1
$ cd ~/Sites/yiiplus
2
$ php init
3
Yii Application Initialization Tool v1.0
4
5
Which environment do you want the application to be initialized in?
6
7
  [0] Development
8
  [1] Production
9
10
  Your choice [0-1, or "q" to quit] 0
11
12
  Initialize the application under 'Development' environment? [yes|no] yes

13


14
  Start initialization ...
15
16
   generate backend/config/main-local.php
17
   generate backend/config/params-local.php
18
   generate backend/web/index-test.php
19
   generate backend/web/index.php
20
   generate common/config/main-local.php
21
   generate common/config/params-local.php
22
   generate console/config/main-local.php
23
   generate console/config/params-local.php
24
   generate frontend/config/main-local.php
25
   generate frontend/config/params-local.php
26
   generate frontend/web/index-test.php
27
   generate frontend/web/index.php
28
   generate yii
29
   generate cookie validation key in backend/config/main-local.php
30
   generate cookie validation key in frontend/config/main-local.php
31
      chmod 0777 backend/runtime
32
      chmod 0777 backend/web/assets
33
      chmod 0777 frontend/runtime
34
      chmod 0777 frontend/web/assets
35
      chmod 0755 yii
36
      chmod 0755 tests/codeception/bin/yii
37
38
  ... initialization completed.

Preparar la base de datos

A continuación, utilizaré la versión instalada de PHPMyAdmin para crear la base de datos:

create the database in PHPMyAdmincreate the database in PHPMyAdmincreate the database in PHPMyAdmin

Haga clic en Crear. Tomando capturas de pantalla para el tutorial, me olvidé de hacer clic en crear y luego me preguntaba por qué no era capaz de migrar mi base de datos—no existía todavía.

A continuación, edite /common/config/main-local.php para incluir la configuración de la base de datos:

1
<?php
2
return [
3
    'components' => [
4
        'db' => [
5
            'class' => 'yii\db\Connection',
6
            'dsn' => 'mysql:host=localhost;dbname=yiiplus',
7
            'username' => 'root',
8
            'password' => '-localmysqldevpwd-',
9
            'charset' => 'utf8',
10
        ],
11
        'mailer' => [

Entonces, está listo para ejecutar la migración de la base de datos para inicializar su aplicación. Esto establece principalmente la tabla para la gestión de usuarios:

1
$ ./yii migrate
2
3
Yii Migration Tool (based on Yii v2.0.6)
4
5
Creating migration history table "migration"...Done.
6
Total 1 new migration to be applied:
7
    m130524_201442_init
8
9
Apply the above migration? (yes|no) [no]:yes
10
*** applying m130524_201442_init
11
    > create table {{%user}} ... done (time: 0.007s)
12
*** applied m130524_201442_init (time: 0.022s)
13
14
15
Migrated up successfully.

Configuración de Apache para los sitios front-end y back-end

Cuando configuramos nuestro entorno de desarrollo o producción con la plantilla avanzada, necesitamos apuntar al servidor web a una ruta raíz diferente, dos en realidad.

Primero, editaremos nuestro archivo de hosts para incluir frontend.dev y backend.dev:

1
$ more /etc/hosts
2
3
127.0.0.1       localhost 
4
127.0.0.1       frontend.dev
5
127.0.0.1       backend.dev

En mi entorno de desarrollo con MAMP, enlazaré mi directorio yiiplus con htdocs de MAMP:

1
 $ cd /Applications/MAMP/htdocs/
2
 $ ln -s ~/Sites/yiiplus /Applications/MAMP/htdocs/yiiplus

A continuación, activaré (descomente) la inclusión de hosts virtuales:

1
$ nano /Applications/MAMP/conf/apache/httpd.conf
2
3
# Virtual Hosts
4
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Y configurar rutas para cada uno de los nombres de mi servidor:

1
$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
2
3
NameVirtualHost *:8888
4
5
<VirtualHost *:8888>
6
       ServerName frontend.dev
7
       DocumentRoot /Applications/MAMP/htdocs/yiiplus/frontend/web/
8
9
       <Directory "/Applications/MAMP/htdocs/yiiplus/frontend/web/">
10
           # use mod_rewrite for pretty URL support
11
           RewriteEngine on
12
           # If a directory or a file exists, use the request directly
13
           RewriteCond %{REQUEST_FILENAME} !-f
14
           RewriteCond %{REQUEST_FILENAME} !-d
15
           # Otherwise forward the request to index.php
16
           RewriteRule . index.php
17
18
           # use index.php as index file
19
           DirectoryIndex index.php
20
21
           # ...other settings...
22
       </Directory>
23
   </VirtualHost>
24
25
   <VirtualHost *:8888>
26
       ServerName backend.dev
27
       DocumentRoot /Applications/MAMP/htdocs/yiiplus/backend/web/
28
29
       <Directory "/Applications/MAMP/htdocs/yiiplus/backend/web/">
30
           # use mod_rewrite for pretty URL support
31
           RewriteEngine on
32
           # If a directory or a file exists, use the request directly
33
           RewriteCond %{REQUEST_FILENAME} !-f
34
           RewriteCond %{REQUEST_FILENAME} !-d
35
           # Otherwise forward the request to index.php
36
           RewriteRule . index.php
37
38
           # use index.php as index file
39
           DirectoryIndex index.php
40
41
           # ...other settings...
42
       </Directory>
43
   </VirtualHost>

Una vez que esté completo, aquí es lo que el sitio web front-end se verá en http://frontend.dev:8888:

Yii2 Advanced Template Front End Home PageYii2 Advanced Template Front End Home PageYii2 Advanced Template Front End Home Page

El sitio back-end le pedirá que inicie la sesión—es para los administradores:

Yii2 Advanced Template Back End Home PageYii2 Advanced Template Back End Home PageYii2 Advanced Template Back End Home Page

Exploración de la gestión de usuarios

Ahora voy a guiarle a través de las características básicas de administración de usuarios de la plantilla avanzada. Pero primero debemos asegurarnos de que estamos recibiendo correos electrónicos de Yii en nuestro entorno de desarrollo.

Configuración la entrega de correo electrónico

La administración de usuarios envía correos electrónicos para restablecer las contraseñas, por lo que debemos activar la configuración SwiftMailer SMTP de Yii. Voy a utilizar Mailtrap.io, que exploré en un tutorial anterior, Introducción a Mailtrap: Un servidor SMTP falso para pruebas de preproducción de correo electrónico de la aplicación.

Mailtrap proporciona un servidor SMTP falso para que su equipo de desarrollo pueda probar, ver y compartir correos electrónicos enviados desde los entornos de preproducción y probar con datos reales sin el riesgo de enviar spam a clientes reales. Para muchas tareas de desarrollo, el uso de Mailtrap será gratuito.

Esencialmente, se registra en Mailtrap y envía todo el correo electrónico del entorno de preproducción a través de su servidor SMTP Mailtrap falso. Aquí hay una breve descripción general de Mailtrap por Railsware:

Si sigue el tutorial y crea una cuenta de Mailtrap, verá su bandeja de entrada de demostración:

The Mailtrap dashboard with your inboxesThe Mailtrap dashboard with your inboxesThe Mailtrap dashboard with your inboxes

Y, al hacer clic en el icono Configuración en la lista de buzones de entrada, verá que cada bandeja de entrada de Mailtrap tiene sus propias credenciales de servidor SMTP:

Mailtrap SMTP Server credentialsMailtrap SMTP Server credentialsMailtrap SMTP Server credentials

Con Yii, estoy actualizando la configuración SMTP de SwiftMailer en /common/config/main-local.php. Esto es como puede verse:

1
        'mailer' => [
2
                        'class' => 'yii\swiftmailer\Mailer',
3
                        'viewPath' => '@common/mail',
4
                        'useFileTransport' => false,
5
                        'transport' => [
6
                            'class' => 'Swift_SmtpTransport',
7
                            'host' => 'mailtrap.io',
8
                            'username' => '29xxxxxxxxxxx72',
9
                            'password' => '2c3xxxxxxxxxxf5',
10
                            'port' => '2525',
11
                            'encryption' => 'tls',
12
                                        ],
13
                    ],

Tenga en cuenta que si no personaliza viewPath como se muestra arriba, puede encontrarse con un error en torno a los archivos de plantilla de correo electrónico que no se encuentran.

Inscripción y registro

Esto es lo que se ve en la pantalla de registro front-end:

Yii2 Advanced Application Template Sign up screenYii2 Advanced Application Template Sign up screenYii2 Advanced Application Template Sign up screen

Se mostrar la página de inicio en el estado inicio de sesión:

Yii2 Advanced Application Template Signed inYii2 Advanced Application Template Signed inYii2 Advanced Application Template Signed in

Ingresar

Esta es la pantalla de inicio de sesión:

Yii2 Advanced Application Template LoginYii2 Advanced Application Template LoginYii2 Advanced Application Template Login

Olvidó su contraseña

Y aquí está la pantalla Olvido su contraseña:

Yii2 Advanced Application Template Password ResetYii2 Advanced Application Template Password ResetYii2 Advanced Application Template Password Reset

Si solicita una nueva contraseña, la encontrará en Mailtrap:

Yii2 Advanced Application Template Using MailTrap for SMTPYii2 Advanced Application Template Using MailTrap for SMTPYii2 Advanced Application Template Using MailTrap for SMTP

¿Que sigue?

Usted puede desear comprobar hacia fuera mi serie creacion de su startup con PHP, que utiliza la plantilla avanzada de Yii2. Además, si está interesado en integrar este tutorial con Yii2 User, echa un vistazo a la guía de integración de Yii2: User con la plantilla avanzada y la autenticación de Google (próximamente).

Espero que haya disfrutado aprendiendo sobre la Plantilla Avanzada de Yii2. Tengo curiosidad por escuchar sus sugerencias en los comentarios sobre si prefiere la plantilla básica.

Vea los próximos tutoriales en mi serie Programación Con Yii2 mientras continúo sumando diferentes aspectos del framework. Agradezco las peticiones de características y temáticas. Puedes publicarlos en los comentarios a continuación o enviarme un correo electrónico a mi sitio web de Lookahead Consulting.

Si quieres saber cuándo llega el próximo tutorial de Yii2, sígueme @reifman en Twitter o consulta mi página de instructor. Mi página de instructor incluirá todos los artículos de esta serie tan pronto como se publiquen.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.