Commit 34d762c2 by Alexander Makarov

Merge pull request #6679 from pana1990/guide-es

Update intro-upgrde-from-v1.md in guide-es [skip ci]
parents 801de52d 7f7050d5
...@@ -6,7 +6,7 @@ en su segunda versión. ...@@ -6,7 +6,7 @@ en su segunda versión.
Como resultado, actualizar desde la versión 1.1 no es tan trivial como actualizar entre versiones menores. En esta Como resultado, actualizar desde la versión 1.1 no es tan trivial como actualizar entre versiones menores. En esta
guía encontrarás las diferencias más grandes entre estas dos versiones. guía encontrarás las diferencias más grandes entre estas dos versiones.
Si no has utilizado Yii 1.1 antes, puedes saltar con seguridad esta sección e ir directamente a "[Comenzando con Yii](start-installation.md)". Si no has utilizado Yii 1.1 antes, puedes saltarte con seguridad esta sección e ir directamente a "[Comenzando con Yii](start-installation.md)".
Es importante anotar que Yii 2.0 introduce más características de las que van a ser cubiertas en este resumen. Es altamente recomendado Es importante anotar que Yii 2.0 introduce más características de las que van a ser cubiertas en este resumen. Es altamente recomendado
que leas a través de toda la guía definitiva para aprender acerca de todas ellas. Hay muchas posibilidades de que algo que hayas desarrollado anteriormente para extender Yii, sea ahora parte del núcleo de la librería. que leas a través de toda la guía definitiva para aprender acerca de todas ellas. Hay muchas posibilidades de que algo que hayas desarrollado anteriormente para extender Yii, sea ahora parte del núcleo de la librería.
...@@ -30,13 +30,13 @@ Abajo hay un resumen de los mayores cambios en relación a PHP: ...@@ -30,13 +30,13 @@ Abajo hay un resumen de los mayores cambios en relación a PHP:
- [Namespaces](http://php.net/manual/es/language.namespaces.php). - [Namespaces](http://php.net/manual/es/language.namespaces.php).
- [Funciones anónimas](http://php.net/manual/es/functions.anonymous.php). - [Funciones anónimas](http://php.net/manual/es/functions.anonymous.php).
- Sintáxis cortas de Arrays `[...elementos...]` es utilizado en vez de `array(...elementos...)`. - La sintaxis corta de Arrays `[...elementos...]` es utilizada en vez de `array(...elementos...)`.
- Etiquetas cortas de `echo`. Ahora en las vistas se usa `<?=`. Esto se puede utilizar desde PHP 5.4. - Etiquetas cortas de `echo`. Ahora en las vistas se usa `<?=`. Esto se puede utilizar desde PHP 5.4.
- [SPL - Biblioteca estándar de PHP](http://php.net/manual/es/book.spl.php). - [SPL - Biblioteca estándar de PHP](http://php.net/manual/es/book.spl.php).
- [Enlace estático en tiempo de ejecución](http://php.net/manual/es/language.oop5.late-static-bindings.php). - [Enlace estático en tiempo de ejecución](http://php.net/manual/es/language.oop5.late-static-bindings.php).
- [Fecha y Hora](http://php.net/manual/es/book.datetime.php). - [Fecha y Hora](http://php.net/manual/es/book.datetime.php).
- [Traits](http://php.net/manual/es/language.oop5.traits.php). - [Traits](http://php.net/manual/es/language.oop5.traits.php).
- [Internacionalización](http://php.net/manual/es/book.intl.php). Yii 2.0 utiliza la extensión `intl` de PHP - [intl](http://php.net/manual/es/book.intl.php). Yii 2.0 utiliza la extensión `intl` de PHP
como soporte para internacionalización. como soporte para internacionalización.
...@@ -45,23 +45,23 @@ Namespace ...@@ -45,23 +45,23 @@ Namespace
El cambio más obvio en Yii 2.0 es el uso de namespaces. Casi todas las clases del núcleo El cambio más obvio en Yii 2.0 es el uso de namespaces. Casi todas las clases del núcleo
utilizan namespaces, ej., `yii\web\Request`. El prefijo "C" no se utiliza más en los nombre de clases. utilizan namespaces, ej., `yii\web\Request`. El prefijo "C" no se utiliza más en los nombre de clases.
El esquema de nombre ahora utiliza la ruta de directorios. Por ejemplo, `yii\web\Request` El esquema de nombres sigue la estructura de directorios. Por ejemplo, `yii\web\Request`
indica que el archivo de la clase correspondiente es `web/Request.php`, en el directorio de Yii. indica que el archivo de la clase correspondiente `web/Request.php` está bajo el directorio de Yii framework.
(Puedes utilizar cualquier clase del núcleo sin necesidad de incluir el archivo que la contiene, gracias (Puedes utilizar cualquier clase del núcleo sin necesidad de incluir el archivo que la contiene, gracias
al autoloader de Yii.) al autoloader de Yii.)
Component y Object Componentes y Objetos
------------------ ----------------------
Yii 2.0 parte la clase `CComponent` de 1.1 en dos clases: [[yii\base\Object]] y [[yii\base\Component]]. Yii 2.0 parte la clase `CComponent` de 1.1 en dos clases: [[yii\base\Object]] y [[yii\base\Component]].
La clase [[yii\base\Object|Object]] es una clase base que permite definir [propiedades de objecto](concept-properties.md) La clase [[yii\base\Object|Object]] es una clase base que permite definir [propiedades de object](concept-properties.md)
a través de getters y setters. La clase [[yii\base\Component|Component]] extiende de [[yii\base\Object|Object]] y soporta a través de getters y setters. La clase [[yii\base\Component|Component]] extiende de [[yii\base\Object|Object]] y soporta
[eventos](concept-events.md) y [comportamientos (behaviors)](concept-behaviors.md). [eventos](concept-events.md) y [comportamientos](concept-behaviors.md).
Si tu clase no necesita utilizar las características de eventos o comportamientos, puedes considerar usar Si tu clase no necesita utilizar las características de eventos o comportamientos, puedes considerar usar
[[yii\base\Object|Object]] como clase base. Esto es usualmente en el caso de que las clases que representan sean [[yii\base\Object|Object]] como clase base. Esto es frecuente en el caso de que las clases que representan sean
estructuras de datos básicas. estructuras de datos básicas.
...@@ -69,8 +69,8 @@ Configuración de objetos ...@@ -69,8 +69,8 @@ Configuración de objetos
------------------------ ------------------------
La clase [[yii\base\Object|Object]] introduce una manera uniforme de configurar objetos. Cualquier clase descendiente La clase [[yii\base\Object|Object]] introduce una manera uniforme de configurar objetos. Cualquier clase descendiente
de [[yii\base\Object|Object]] debería declarar su constructor (si fuera necesario) de la siguiente manera así de [[yii\base\Object|Object]] debería declarar su constructor (si fuera necesario) de la siguiente manera para que
puede ser propiamente configurado: puede ser adecuadamente configurado:
```php ```php
class MyClass extends \yii\base\Object class MyClass extends \yii\base\Object
...@@ -91,10 +91,10 @@ class MyClass extends \yii\base\Object ...@@ -91,10 +91,10 @@ class MyClass extends \yii\base\Object
} }
``` ```
En el ejemplo de arriba, el último parámetro del constructor debe tomar una matriz de configuración En el ejemplo de arriba, el último parámetro del constructor debe tomar un array de configuración que
conteniendo pares clave-valor para la inicialización de las propiedades al final del mismo. contiene pares clave-valor para la inicialización de las propiedades al final del mismo.
Puedes sobrescribir el método [[yii\base\Object::init()|init()]] para realizar el trabajo de inicialización Puedes sobrescribir el método [[yii\base\Object::init()|init()]] para realizar el trabajo de inicialización
que debe ser hecho luego de que la configuración ha sido aplicada. que debe ser hecho después de que la configuración haya sido aplicada.
Siguiendo esa convención, podrás crear y configurar nuevos objetos utilizando Siguiendo esa convención, podrás crear y configurar nuevos objetos utilizando
un array de configuración: un array de configuración:
...@@ -107,7 +107,7 @@ $object = Yii::createObject([ ...@@ -107,7 +107,7 @@ $object = Yii::createObject([
], [$param1, $param2]); ], [$param1, $param2]);
``` ```
Se puede encontrar mayor detalle acerca del tema en la sección [Configuración de objetos](concept-configurations.md). Se puede encontrar más detalles acerca del tema en la sección [Configuración de objetos](concept-configurations.md).
Eventos Eventos
...@@ -132,20 +132,20 @@ $component->on($eventName, $handler); ...@@ -132,20 +132,20 @@ $component->on($eventName, $handler);
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á relacionado de cerca con un namespace. 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).
...@@ -154,11 +154,11 @@ Se puede encontrar más detalles del tema en la sección [Alias](concept-aliases ...@@ -154,11 +154,11 @@ Se puede encontrar más detalles del tema en la sección [Alias](concept-aliases
Vistas Vistas
------ ------
El cambio más significativo con respecto a las vistas en Yii 2 es que la variable especial `$this` (dentro de una vista) El cambio más significativo con respecto a las vistas en Yii 2 es que la variable especial `$this` dentro de una vista
ya no se refiere al controlador o widget actual. ya no se refiere al controlador o widget actual.
En vez de eso, `$this` ahora se refiere al objeto de la *vista*, un concepto nuevo introducido en Yii 2.0. En vez de eso, `$this` ahora se refiere al objeto de la *vista*, un concepto nuevo introducido en Yii 2.0.
El objeto *vista* es del tipo [[yii\web\View]], que representa la parte de las vistas en el patrón MVC. El objeto *vista* es del tipo [[yii\web\View]], que representa la parte de las vistas en el patrón MVC. Si
of the MVC pattern. Si quieres acceder al controlador o al widget correspondiente desde la propia vista, quieres acceder al controlador o al widget correspondiente desde la propia vista,
puedes utilizar `$this->context`. puedes utilizar `$this->context`.
Para renderizar una vista parcial (partial) dentro de otra vista, se utiliza `$this->render()`, no `$this->renderPartial()`. Para renderizar una vista parcial (partial) dentro de otra vista, se utiliza `$this->render()`, no `$this->renderPartial()`.
...@@ -179,10 +179,10 @@ Modelos ...@@ -179,10 +179,10 @@ Modelos
------- -------
Yii 2.0 utiliza [[yii\base\Model]] como modelo base, algo similar a `CModel` en 1.1. Yii 2.0 utiliza [[yii\base\Model]] como modelo base, algo similar a `CModel` en 1.1.
La clase `CFormModel` ha sido descartada por completo. Ahora, en Yii 2 debes extender [[yii\base\Model]] para crear clases de modelos. La clase `CFormModel` ha sido descartada por completo. Ahora, en Yii 2 debes extender de [[yii\base\Model]] para crear clases de modelos basados en formularios.
Yii 2.0 introduce un nuevo método llamado [[yii\base\Model::scenarios()|scenarios()]] para declarar escenarios soportados, Yii 2.0 introduce un nuevo método llamado [[yii\base\Model::scenarios()|scenarios()]] para declarar escenarios soportados,
y para indicar bajo qué escenario un atributo necesita ser validado, puede ser considerado seguro o no, etc. Por ejemplo: y para indicar bajo que escenario un atributo necesita ser validado, puede ser considerado seguro o no, etc. Por ejemplo:
```php ```php
public function scenarios() public function scenarios()
...@@ -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í:
...@@ -259,19 +259,19 @@ ActiveForm::end(); ...@@ -259,19 +259,19 @@ ActiveForm::end();
Consulta la sección [Widgets](structure-widgets.md) para más detalles. Consulta la sección [Widgets](structure-widgets.md) para más detalles.
Themes Temas
------ ------
Los themes 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 vista de origen a uno con un theme aplicado. Por ejemplo, si el path map de un theme 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 theme 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 themes 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 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.
Además, el componente `CThemeManager` ya no existe. En cambio, `theme` es una propiedad configurable del componente `view` Además, el componente `CThemeManager` ya no existe. En cambio, `theme` es una propiedad configurable del componente `view`
de la aplicación. de la aplicación.
Consulta la sección [Utilizando Themes](output-theming.md) para más detalles. Consulta la sección [Temas](output-theming.md) para más detalles.
Aplicaciones de Consola Aplicaciones de Consola
...@@ -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
------------------- -------------------
En Yii 2.0, 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:
...@@ -331,8 +331,8 @@ Assets ...@@ -331,8 +331,8 @@ Assets
Yii 2.0 introduce un nuevo concepto llamado *asset bundle* que reemplaza el concepto de script package encontrado en Yii 1.1. Yii 2.0 introduce un nuevo concepto llamado *asset bundle* que reemplaza el concepto de script package encontrado en Yii 1.1.
Un asset bundle es una colección de assets (ej. archivos JavaScript, archivos CSS, imágenes, etc.) dentro de un directorio. Un asset bundle es una colección de archivos assets (ej. archivos JavaScript, archivos CSS, imágenes, etc.) dentro de un directorio.
Cada asset bundle está representada por una clase que extiende de [[yii\web\AssetBundle]]. Cada asset bundle está representado por una clase que extiende de [[yii\web\AssetBundle]].
Al registrar un asset bundle a través de [[yii\web\AssetBundle::register()]], haces que los assets de dicho bundle sean accesibles Al registrar un asset bundle a través de [[yii\web\AssetBundle::register()]], haces que los assets de dicho bundle sean accesibles
vía Web. A diferencia de Yii 1, la página que registra el bundle contendrá automáticamente las referencias a los archivos vía Web. A diferencia de Yii 1, la página que registra el bundle contendrá automáticamente las referencias a los archivos
JavaScript y CSS especificados en el bundle. JavaScript y CSS especificados en el bundle.
...@@ -356,10 +356,10 @@ Por favor, consulta la sección [Información General de Helpers](helper-overvie ...@@ -356,10 +356,10 @@ 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 claramente que antes: Utilizando estos campos, puedes crear formularios más legibles que antes:
```php ```php
<?php $form = yii\widgets\ActiveForm::begin(); ?> <?php $form = yii\widgets\ActiveForm::begin(); ?>
...@@ -374,12 +374,12 @@ Utilizando estos campos, puedes crear formularios más claramente que antes: ...@@ -374,12 +374,12 @@ Utilizando estos campos, puedes crear formularios más claramente 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]]
que puede ser convertido en una declaración SQL con la ayuda de [[yii\db\QueryBuilder|QueryBuilder]] detrás de escena. que puede ser convertido en una declaración SQL con la ayuda de [[yii\db\QueryBuilder|QueryBuilder]] detrás de la escena.
Por ejemplo: Por ejemplo:
```php ```php
...@@ -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
// Para traer todos los clientes *activos* y ordenarlos 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')
...@@ -431,27 +431,27 @@ class Customer extends \yii\db\ActiveRecord ...@@ -431,27 +431,27 @@ class Customer extends \yii\db\ActiveRecord
``` ```
Ahora puedes utilizar `$customer->orders` para acceder a las órdenes de la tabla relacionada. También puedes utilizar el siguiente Ahora puedes utilizar `$customer->orders` para acceder a las órdenes de la tabla relacionada. También puedes utilizar el siguiente
código para realizar una consulta 'al-vuelo' relacionada con una condición personalizada: código para realizar una consulta relacional 'al-vuelo' con una condición personalizada:
```php ```php
$orders = $customer->getOrders()->andWhere('status=1')->all(); $orders = $customer->getOrders()->andWhere('status=1')->all();
``` ```
Cuando se utiliza la carga temprana de la relación, Yii 2.0 lo hace diferente de 1.1. En particular, en 1.1 una declaración JOIN Cuando se utiliza la carga temprana (eager loading) de la relación, Yii 2.0 lo hace diferente de 1.1. En particular, en 1.1 una declaración JOIN
sería creada para seleccionar tanto los registros de la tabla primaria como los relacionados. En Yii 2.0, dos declaraciones SQL son ejecutadas sería creada para seleccionar tanto los registros de la tabla primaria como los relacionados. En Yii 2.0, dos declaraciones SQL son ejecutadas
sin utilizar un JOIN: la primera traer todos los modelos primarios, mientras que la segunda trae los registros relacionados sin utilizar un JOIN: la primera trae todos los modelos primarios, mientras que la segunda trae los registros relacionados
utilizando como condición la clave primaria de los primarios. utilizando como condición la clave primaria de los primarios.
En vez de devolver objetos [[yii\db\ActiveRecord|ActiveRecord]], puedes conectar el método [[yii\db\ActiveQuery::asArray()|asArray()]] En vez de devolver objetos [[yii\db\ActiveRecord|ActiveRecord]], puedes conectar el método [[yii\db\ActiveQuery::asArray()|asArray()]]
mientras generas una consulta que devuelve un gran número de registros. Esto causará que el resultado de la consulta sea devuelto como mientras generas una consulta que devuelve un gran número de registros. Esto causará que el resultado de la consulta sea devuelto como
matrices (arrays), lo que puede reducir significativamente la necesidad de tiempo de CPU y memoria si el número de registros es grande. arrays, lo que puede reducir significativamente la necesidad de tiempo de CPU y memoria si el número de registros es grande.
Por ejemplo: Por ejemplo:
```php ```php
$customers = Customer::find()->asArray()->all(); $customers = Customer::find()->asArray()->all();
``` ```
Otro cambio es que ya no puedes definir valores por defecto a los atributos a través de propiedades publicas. Otro cambio es que ya no puedes definir valores por defecto a los atributos a través de propiedades públicas.
Si lo necesitaras, debes definirlo en el método `init` de la clase del registro en cuestión. Si lo necesitaras, debes definirlo en el método `init` de la clase del registro en cuestión.
```php ```php
...@@ -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 propio, usted tiene que anular los métodos `events()` como el siguiente, 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
namespace app\components; namespace app\components;
...@@ -503,17 +503,17 @@ User e IdentityInterface ...@@ -503,17 +503,17 @@ 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]] lo que es mucho más directo para 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
```php ```php
...@@ -530,5 +530,5 @@ Utilizando Yii 1.1 y 2.x juntos ...@@ -530,5 +530,5 @@ Utilizando Yii 1.1 y 2.x juntos
------------------------------- -------------------------------
Si tienes código en Yii 1.1 que quisieras utilizar junto con Yii 2.0, por favor consulta Si tienes código en Yii 1.1 que quisieras utilizar junto con Yii 2.0, por favor consulta
la sección [Using Yii 1.1 and 2.0 Together](tutorial-yii-integration.md). la sección [Utilizando Yii 1.1 y 2.0 juntos](tutorial-yii-integration.md).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment