Hay muchas mejoras en lo que respecta a eventos. Para más detalles, consulta la sección [Eventos](concept-events.md).
Hay muchas mejoras en lo que respecta a eventos. Para más detalles, consulta la sección [Eventos](concept-events.md).
Path Alias
Alias
----------
-----
Yii 2.0 extiende el uso de path alias tanto para archivos/directorios como URLs. Yii 2.0 ahora requiere que cada
Yii 2.0 extiende el uso de alias tanto para archivos/directorios como URLs. Yii 2.0 ahora requiere que cada
alias comience con el carácter `@`, para diferenciarlos de rutas o URLs normales.
alias comience con el carácter `@`, para diferenciarlos de rutas o URLs normales.
Por ejemplo, el alias `@yii` corresponde al directorio donde Yii se encuentra instalado. Los path alias
Por ejemplo, el alias `@yii` corresponde al directorio donde Yii se encuentra instalado. Los alias
están soportados en la mayor parte del núcleo. Por ejemplo, [[yii\caching\FileCache::cachePath]] puede tomar tanto
están soportados en la mayor parte del núcleo. Por ejemplo, [[yii\caching\FileCache::cachePath]] puede tomar tanto
una ruta de directorios normal como un alias.
una ruta de directorios normal como un alias.
Un path alias está estrechamente relacionado con un namespace de la clase. Se recomienda definir un path alias
Un alias está estrechamente relacionado con un namespace de la clase. Se recomienda definir un alias
por cada namespace raíz, y así poder utilizar el autolader de Yii sin otra configuración.
por cada namespace raíz, y así poder utilizar el autolader de Yii sin otra configuración.
Por ejemplo, debido a que `@yii` se refiere al directorio de instalación, una clase
Por ejemplo, debido a que `@yii` se refiere al directorio de instalación, una clase
como `yii\web\Request` puede ser auto-cargada. Si estás utilizando una librería de terceros,
como `yii\web\Request` puede ser auto-cargada. Si estás utilizando una librería de terceros,
como Zend Framework, puedes definir un path alias `@Zend` que se refiera al directorio de instalación
como Zend Framework, puedes definir un alias `@Zend` que se refiera al directorio de instalación
de ese framework. Una vez realizado esto, Yii será capaz de auto-cargar cualquier clase de Zend Framework también.
de ese framework. Una vez realizado esto, Yii será capaz de auto-cargar cualquier clase de Zend Framework también.
Se puede encontrar más detalles del tema en la sección [Alias](concept-aliases.md).
Se puede encontrar más detalles del tema en la sección [Alias](concept-aliases.md).
...
@@ -228,7 +228,7 @@ public function actionView($id)
...
@@ -228,7 +228,7 @@ public function actionView($id)
}
}
```
```
Por favor, consulta la sección [Controllers](structure-controllers.md) para más detalles acerca de los controladores.
Por favor, consulta la sección [Controladores](structure-controllers.md) para más detalles acerca de los controladores.
Widgets
Widgets
...
@@ -236,7 +236,7 @@ Widgets
...
@@ -236,7 +236,7 @@ Widgets
Yii 2.0 utiliza [[yii\base\Widget]] como clase base de los widgets, similar a `CWidget` en Yii 1.1.
Yii 2.0 utiliza [[yii\base\Widget]] como clase base de los widgets, similar a `CWidget` en Yii 1.1.
Para obtener mejor soporte del framework en IDEs, Yii 2.0 introduce una nueva sintáxis para utilizar widgets.
Para obtener mejor soporte del framework en IDEs, Yii 2.0 introduce una nueva sintaxis para utilizar widgets.
Los métodos estáticos [[yii\base\Widget::begin()|begin()]], [[yii\base\Widget::end()|end()]], y [[yii\base\Widget::widget()|widget()]]
Los métodos estáticos [[yii\base\Widget::begin()|begin()]], [[yii\base\Widget::end()|end()]], y [[yii\base\Widget::widget()|widget()]]
fueron incorporados, y deben utilizarse así:
fueron incorporados, y deben utilizarse así:
...
@@ -263,7 +263,7 @@ Temas
...
@@ -263,7 +263,7 @@ Temas
------
------
Los temas funcionan completamente diferente en Yii 2.0. Ahora están basados en un mecanismo de mapeo de rutas,
Los temas funcionan completamente diferente en Yii 2.0. Ahora están basados en un mecanismo de mapeo de rutas,
que mapea la ruta de un archivo de la vista de origen a uno con un tema aplicado. Por ejemplo, si el path map de un tema es
que mapea la ruta de un archivo de la vista de origen a uno con un tema aplicado. Por ejemplo, si el mapeo de ruta de un tema es
`['/web/views' => '/web/themes/basic']`, entonces la versión con el tema aplicado del archivo
`['/web/views' => '/web/themes/basic']`, entonces la versión con el tema aplicado del archivo
`/web/views/site/index.php` será `/web/themes/basic/site/index.php`. Por esta razón, ahora los temas pueden ser
`/web/views/site/index.php` será `/web/themes/basic/site/index.php`. Por esta razón, ahora los temas pueden ser
aplicados a cualquier archivo de la vista, incluso una vista renderizada fuera del contexto de un controlador o widget.
aplicados a cualquier archivo de la vista, incluso una vista renderizada fuera del contexto de un controlador o widget.
...
@@ -304,7 +304,7 @@ Por favor, consulta la sección [Internacionalización](tutorial-i18n.md) para m
...
@@ -304,7 +304,7 @@ Por favor, consulta la sección [Internacionalización](tutorial-i18n.md) para m
Filtros de Acciones
Filtros de Acciones
-------------------
-------------------
Los filtros de acciones son implementados a través de comportamientos (behaviors). Para definir un
Los filtros de acciones son implementados a través de comportamientos. Para definir un
nuevo filtro personalizado, se debe extender de [[yii\base\ActionFilter]]. Para utilizar el filtro, conecta la clase del filtro
nuevo filtro personalizado, se debe extender de [[yii\base\ActionFilter]]. Para utilizar el filtro, conecta la clase del filtro
al controlador como un comportamiento. Por ejemplo, para utilizar el filtro [[yii\filters\AccessControl]], deberías tener
al controlador como un comportamiento. Por ejemplo, para utilizar el filtro [[yii\filters\AccessControl]], deberías tener
el siguiente código en el controlador:
el siguiente código en el controlador:
...
@@ -356,7 +356,7 @@ Por favor, consulta la sección [Información General de Helpers](helper-overvie
...
@@ -356,7 +356,7 @@ Por favor, consulta la sección [Información General de Helpers](helper-overvie
Formularios
Formularios
-----------
-----------
Yii 2.0 introduce el concepto de *campo* (field) para construir formularios utilizando [[yii\widgets\ActiveForm]]. Un campo (field)
Yii 2.0 introduce el concepto de *campo* (field) para construir formularios utilizando [[yii\widgets\ActiveForm]]. Un campo
es un contenedor que consiste en una etiqueta, un input, un mensaje de error y/o texto de ayuda.
es un contenedor que consiste en una etiqueta, un input, un mensaje de error y/o texto de ayuda.
Un campo es representado como un objeto [[yii\widgets\ActiveField|ActiveField]].
Un campo es representado como un objeto [[yii\widgets\ActiveField|ActiveField]].
Utilizando estos campos, puedes crear formularios más legibles que antes:
Utilizando estos campos, puedes crear formularios más legibles que antes:
...
@@ -374,8 +374,8 @@ Utilizando estos campos, puedes crear formularios más legibles que antes:
...
@@ -374,8 +374,8 @@ Utilizando estos campos, puedes crear formularios más legibles que antes:
Por favor, consulta la sección [Creando Formularios](input-forms.md) para más detalles.
Por favor, consulta la sección [Creando Formularios](input-forms.md) para más detalles.
Query Builder
Constructor de Consultas
-------------
------------------------
En Yii 1.1, la generación de consultas a la base de datos estaba dividida en varias clases, incluyendo `CDbCommand`,
En Yii 1.1, la generación de consultas a la base de datos estaba dividida en varias clases, incluyendo `CDbCommand`,
`CDbCriteria`, y `CDbCommandBuilder`. Yii 2.0 representa una consulta a la base de datos en términos de un objeto [[yii\db\Query|Query]]
`CDbCriteria`, y `CDbCommandBuilder`. Yii 2.0 representa una consulta a la base de datos en términos de un objeto [[yii\db\Query|Query]]
...
@@ -395,7 +395,7 @@ $rows = $command->queryAll();
...
@@ -395,7 +395,7 @@ $rows = $command->queryAll();
Lo mejor de todo, dichos métodos de generación de consultas pueden ser también utilizados mientras se trabaja con [Active Record](db-active-record.md).
Lo mejor de todo, dichos métodos de generación de consultas pueden ser también utilizados mientras se trabaja con [Active Record](db-active-record.md).
Consulta la sección [Query Builder](db-query-builder.md) para más detalles.
Consulta la sección [Constructor de Consultas](db-query-builder.md) para más detalles.
Active Record
Active Record
...
@@ -409,7 +409,7 @@ y por lo tanto hereda todos los métodos de generación de consultas.
...
@@ -409,7 +409,7 @@ y por lo tanto hereda todos los métodos de generación de consultas.
Para comenzar a generar una consulta, llamas al método [[yii\db\ActiveRecord::find()]]:
Para comenzar a generar una consulta, llamas al método [[yii\db\ActiveRecord::find()]]:
```php
```php
// Recibe todos los clientes *activos* y ordenardos por su ID:
// Recibe todos los clientes *activos* y ordenados por su ID:
$customers=Customer::find()
$customers=Customer::find()
->where(['status'=>$active])
->where(['status'=>$active])
->orderBy('id')
->orderBy('id')
...
@@ -472,7 +472,7 @@ la sección [Active Record](db-active-record.md) para más detalles.
...
@@ -472,7 +472,7 @@ la sección [Active Record](db-active-record.md) para más detalles.
Active Record Behaviors
Active Record Behaviors
-----------------------
-----------------------
En 2.0, hemos disminuido la clase del comportamiento base `CActiveRecordBehavior`. Si desea crear un comportamiento Active Record, usted tendrá que extender directamente de `yii\base\Behavior`. Si la clase de comportamiento debe responder a algunos eventos propios, usted tiene que anular los métodos `events()` como se muestra a continuación,
En 2.0, hemos eliminado la clase del comportamiento base `CActiveRecordBehavior`. Si desea crear un comportamiento Active Record, usted tendrá que extender directamente de `yii\base\Behavior`. Si la clase de comportamiento debe responder a algunos eventos propios, usted tiene que sobrescribir los métodos `events()` como se muestra a continuación,
```php
```php
namespaceapp\components;
namespaceapp\components;
...
@@ -504,16 +504,16 @@ User e IdentityInterface
...
@@ -504,16 +504,16 @@ User e IdentityInterface
La clase `CWebUser` de 1.1 es reemplazada por [[yii\web\User]], y la clase `CUserIdentity` ha dejado de existir.
La clase `CWebUser` de 1.1 es reemplazada por [[yii\web\User]], y la clase `CUserIdentity` ha dejado de existir.
En cambio, ahora debes implementar [[yii\web\IdentityInterface]] el cual es mucho más directo de usar.
En cambio, ahora debes implementar [[yii\web\IdentityInterface]] el cual es mucho más directo de usar.
El template de Aplicación Avanzada provee un ejemplo así.
La plantilla de Aplicación Avanzada provee un ejemplo así.
Consulta las secciones [Autenticación](security-authentication.md), [Autorización](security-authorization.md), y [Template de Aplicación Avanzanda](tutorial-advanced-app.md) para más detalles.
Consulta las secciones [Autenticación](security-authentication.md), [Autorización](security-authorization.md), y [Plantilla de Aplicación Avanzada](tutorial-advanced-app.md) para más detalles.
Manejo de URLs
Manejo de URLs
--------------
--------------
El manejo de URLs en Yii 2 es similar al de 1.1. Una mejora mayor es que el manejador actual ahora soporta parámetros opcionales.
El manejo de URLs en Yii 2 es similar al de 1.1. Una mejora mayor es que el manejador actual ahora soporta parámetros opcionales.
Por ejemplo, si tienes una regla declarada como a continuación, entonces coincidirá tanto con `post/popular` como `post/1/popular`.
Por ejemplo, si tienes una regla declarada como a continuación, entonces coincidirá tanto con `post/popular` como con `post/1/popular`.
En 1.1, tendrías que haber creado dos reglas diferentes para obtener el mismo resultado
En 1.1, tendrías que haber creado dos reglas diferentes para obtener el mismo resultado