From 85a478024dc04b425f0d1bd6122bb31e20e0bc81 Mon Sep 17 00:00:00 2001 From: Marco Da Silva Date: Sun, 19 Oct 2014 20:33:40 -0430 Subject: [PATCH 1/5] Translation in spanish and corrections --- docs/guide-es/caching-fragment.md | 6 +- docs/guide-es/rest-resources.md | 128 ++++++++++++++++++++++++++++ docs/guide-es/start-installation.md | 3 +- 3 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 docs/guide-es/rest-resources.md diff --git a/docs/guide-es/caching-fragment.md b/docs/guide-es/caching-fragment.md index b0a0c006bf..a96ab575fc 100644 --- a/docs/guide-es/caching-fragment.md +++ b/docs/guide-es/caching-fragment.md @@ -61,7 +61,7 @@ modifica o no. Para especificar una dependencia, activa la opción [[yii\widgets\FragmentCache::dependency|dependencia]] (dependency), que puede ser un objecto [[yii\caching\Dependency]] o un array de configuración para crear un objecto `Dependency`. El -siguidaente código especifica que la caché de fragmento depende del cambio del valor de la columna `updated_at`: +siguiente código especifica que la caché de fragmento depende del cambio del valor de la columna `updated_at`: ```php $dependency = [ @@ -85,9 +85,9 @@ soporte multiples idiomas, la misma pieza del código de la vista puede generar en diferentes idiomas. Por lo tanto, es posible que desees hacer variaciones del mismo contenido almacenado en caché de acuerdo con la actual selección del idioma en la aplicación. -Para especificar variacioens en la memoria caché, configura la opción [[yii\widgets\FragmentCache::variations|variaciones]] +Para especificar variaciones en la memoria caché, configurá la opción [[yii\widgets\FragmentCache::variations|variaciones]] (variations), la cual deberá ser un array de valores escalares, cada uno de ellos representando un factor de variación. -Por ejemplo, para hacer que el contenido almacenado en la caché varie por lenguaje, podrías usar el siguiente código: +Por ejemplo, para hacer que el contenido almacenado en la caché varíe por lenguaje, podrías usar el siguiente código: ```php if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { diff --git a/docs/guide-es/rest-resources.md b/docs/guide-es/rest-resources.md new file mode 100644 index 0000000000..caa287e597 --- /dev/null +++ b/docs/guide-es/rest-resources.md @@ -0,0 +1,128 @@ +Controladores +============= + +Después de crear las clases de recursos y especificar cómo deben ser el formato de datos de recursos, el siguiente paso es crear acciones del controlador para exponer los recursos a los usuarios a través de las APIs RESTful finales. + +Yii ofrece dos clases de controlador de base para simplificar su trabajo de crear acciones REST: [[yii\rest\Controller]] y [[yii\rest\ActiveController]]. La diferencia entre estos dos controladores es que este último proporciona un conjunto predeterminado de acciones que están específicamente diseñadas para hacer frente a los recursos representados a [Active Record](db-active-record.md). Así que si usted está utilizando [Active Record](db-active-record.md) y se siente cómodo con las acciones integradas que proporciona, es posible considerar la prolongación de sus clases de controlador de [[yii\rest\ActiveController]], que le permitirá crear potentes APIs RESTful con código mínimo. + +Ambos [[yii\rest\Controller]] y [[yii\rest\ActiveController]] proporcionar las siguientes características, algunas de las cuales se describen en detalle en las siguientes secciones: + +* Métodos de Validación HTTP; +* [Negociación de contenido y formato de datos](rest-response-formatting.md); +* [Autenticación](rest-authentication.md); +* [Límite de Rango](rest-rate-limiting.md). + +[[yii\rest\ActiveController]] además provee de las siguientes características: + +* Un conjunto de acciones comunes necesarias: `index`, `view`, `create`, `update`, `delete`, `options`; +* La autorización del usuario en cuanto a que la acción solicitada y recursos. + + +## Creando Clases Controladoras + +Al crear una nueva clase de controlador, una convención para nombrar la clase del controlador es utilizar el nombre del tipo de recurso y el uso en singular. Por ejemplo, para servir información del usuario, el controlador puede ser nombrado como `UserController`. + +Creación de una nueva acción es similar a crear una acción para una aplicación Web. La única diferencia es que en lugar de hacer que el resultado utilicé una vista llamando al método `render()`, para las acciones REST regresá directamente los datos. El [[yii\rest\Controller::serializer|serializer]] y el [[yii\web\Response|response object]] se encargará de la conversión de los datos originales, al formato solicitado. Por ejemplo, + +```php +public function actionView($id) +{ + return User::findOne($id); +} +``` + + +## Filtros + +La mayoria de las características API REST son proporcionadas por [[yii\rest\Controller]] que son implementadas por los terminos de los [filtros](structure-filters.md). +En particular, los siguientes filtros se ejecutarán en el orden en que aparecen: + +* [[yii\filters\ContentNegotiator|contentNegotiator]]: apoya la negociación de contenido, que se explica en la sección el [Formateo de respuestas](rest-response-formatting.md); +* [[yii\filters\VerbFilter|verbFilter]]: apoya métodos de validación HTTP; +* [[yii\filters\AuthMethod|authenticator]]: apoya autenticación de usuarios, que se explica en la sección [Autenticación](rest-authentication.md); +* [[yii\filters\RateLimiter|rateLimiter]]: apoya la limitación de rango, que se explica en la sección [Límite de Rango](rest-rate-limiting.md). + +Estos filtros se declaran nombrándolos en el metodo [[yii\rest\Controller::behaviors()|behaviors()]]. Puede reemplazar este método para configurar los filtros individuales, desactivar algunos de ellos, o añadir sus propios filtros. Por ejemplo, si sólo desea utilizar la autenticación básica HTTP, puede escribir el siguiente código: + +```php +use yii\filters\auth\HttpBasicAuth; + +public function behaviors() +{ + $behaviors = parent::behaviors(); + $behaviors['authenticator'] = [ + 'class' => HttpBasicAuth::className(), + ]; + return $behaviors; +} +``` + + +## Extendiendo `ActiveController` + +Si su clase controlador extiende de [[yii\rest\ActiveController]], debe establecer su propiedad [[yii\rest\ActiveController::modelClass||modelClass]] a ser el nombre del recurso la clase que va a servir a través de este controlador. La clase debe extender de [[yii\db\ActiveRecord]]. + + +### Personalizando Acciones + +Por defecto, [[yii\rest\ActiveController]] provee de las siguientes acciones: + +* [[yii\rest\IndexAction|index]]: lista de recursos pagina por pagina; +* [[yii\rest\ViewAction|view]]: retorna el detalle de un recurso específico; +* [[yii\rest\CreateAction|create]]: crear un nuevo recurso; +* [[yii\rest\UpdateAction|update]]: actualizar un recurso existente; +* [[yii\rest\DeleteAction|delete]]: eliminar un recurso específico; +* [[yii\rest\OptionsAction|options]]: retorna los métodos HTTP soportados. + +Todas esta acciones se declaran a través del métodos [[yii\rest\ActiveController::actions()|actions()]]. Usted puede configurar todas estas acciones o desactivar alguna de ellas reescribiendo el método `actions()`, como se muestra a continuación, + +```php +public function actions() +{ + $actions = parent::actions(); + + // disable the "delete" and "create" actions + unset($actions['delete'], $actions['create']); + + // customize the data provider preparation with the "prepareDataProvider()" method + $actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider']; + + return $actions; +} + +public function prepareDataProvider() +{ + // prepare and return a data provider for the "index" action +} +``` + +Por favor, consulte las referencias de clase para las clases de acción individuales para aprender las opciones de configuración que se dispone. + + +### Realizando Comprobación de Acceso + +Al exponer los recursos a través de RESTful APIs, a menudo es necesario comprobar si el usuario actual tiene permiso para acceder y manipular el recurso solicitado. Con [[yii\rest\ActiveController]], puede hacerse reemplazando el método [[yii\rest\ActiveController::checkAccess()|checkAccess()]] con lo siguiente, + +```php +/** + * Checks the privilege of the current user. + * + * This method should be overridden to check whether the current user has the privilege + * to run the specified action against the specified data model. + * If the user does not have access, a [[ForbiddenHttpException]] should be thrown. + * + * @param string $action the ID of the action to be executed + * @param \yii\base\Model $model the model to be accessed. If null, it means no specific model is being accessed. + * @param array $params additional parameters + * @throws ForbiddenHttpException if the user does not have access + */ +public function checkAccess($action, $model = null, $params = []) +{ + // check if the user can access $action and $model + // throw ForbiddenHttpException if access should be denied +} +``` + +El método `checkAccess()` será llamado por defecto en las acciones predeterminadas de [[yii\rest\ActiveController]]. Si crea nuevas acciones y también desea llevar a cabo la comprobación de acceso, debe llamar a este método de forma explícita en las nuevas acciones. + +> Consejo: Usted puede implementar `checkAccess()` mediante el uso del [Componente Role-Based Access Control (RBAC)](security-authorization.md). diff --git a/docs/guide-es/start-installation.md b/docs/guide-es/start-installation.md index 0faab712eb..80acb4dacd 100644 --- a/docs/guide-es/start-installation.md +++ b/docs/guide-es/start-installation.md @@ -21,8 +21,7 @@ En Windows, tendrás que descargar y ejecutar [Composer-Setup.exe](https://getco Por favor, consulta la [Documentación de Composer](https://getcomposer.org/doc/) si encuentras algún problema o deseas obtener un conocimiento más profundo sobre su utilización. -Si ya tienes composer inatalado asegurate que esté actualizado ejecutando `composer self-update` - +Si ya tienes composer instalado asegurate que esté actualizado ejecutando `composer self-update` Teniendo Composer instalado, puedes instalar Yii ejecutando los siguientes comandos en un directorio accesible vía Web: Nota: es posible que en al ejecutar el primer comando te pida tu username From b84691086d5eabc941c13120d68cfc309ece8d3a Mon Sep 17 00:00:00 2001 From: Marco Da Silva Date: Sun, 19 Oct 2014 20:40:07 -0430 Subject: [PATCH 2/5] Update README.md --- docs/guide-es/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide-es/README.md b/docs/guide-es/README.md index 816f5b7e91..f431ffd18c 100644 --- a/docs/guide-es/README.md +++ b/docs/guide-es/README.md @@ -131,7 +131,7 @@ Servicios Web RESTful * **TBD** [Guía breve](rest-quick-start.md) * **TBD** [Recursos (Resources)](rest-resources.md) -* **TBD** [Controladores](rest-controllers.md) +[Controladores](rest-controllers.md) * **TBD** [Gestión de rutas](rest-routing.md) * **TBD** [Formateo de respuestas](rest-response-formatting.md) * **TBD** [Autenticación](rest-authentication.md) From 4e5c1f96785c38a8a6604263da6be01097123e73 Mon Sep 17 00:00:00 2001 From: Marco Da Silva Date: Sun, 19 Oct 2014 20:53:21 -0430 Subject: [PATCH 3/5] Review last commit --- docs/guide-es/rest-resources.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/guide-es/rest-resources.md b/docs/guide-es/rest-resources.md index caa287e597..abc4e36923 100644 --- a/docs/guide-es/rest-resources.md +++ b/docs/guide-es/rest-resources.md @@ -1,11 +1,11 @@ Controladores ============= -Después de crear las clases de recursos y especificar cómo deben ser el formato de datos de recursos, el siguiente paso es crear acciones del controlador para exponer los recursos a los usuarios a través de las APIs RESTful finales. +Después de crear las clases de recursos y especificar cómo debe ser el formato de datos de recursos, el siguiente paso es crear acciones del controlador para exponer los recursos a los usuarios a través de las APIs RESTful finales. -Yii ofrece dos clases de controlador de base para simplificar su trabajo de crear acciones REST: [[yii\rest\Controller]] y [[yii\rest\ActiveController]]. La diferencia entre estos dos controladores es que este último proporciona un conjunto predeterminado de acciones que están específicamente diseñadas para hacer frente a los recursos representados a [Active Record](db-active-record.md). Así que si usted está utilizando [Active Record](db-active-record.md) y se siente cómodo con las acciones integradas que proporciona, es posible considerar la prolongación de sus clases de controlador de [[yii\rest\ActiveController]], que le permitirá crear potentes APIs RESTful con código mínimo. +Yii ofrece dos clases de controlador base para simplificar su trabajo de crear acciones REST: [[yii\rest\Controller]] y [[yii\rest\ActiveController]]. La diferencia entre estos dos controladores es que este último proporciona un conjunto predeterminado de acciones que están específicamente diseñadas para hacer frente a los recursos representados con [Active Record](db-active-record.md). Así que si usted está utilizando [Active Record](db-active-record.md) y se siente cómodo con las acciones integradas que proporciona, es posible considerar la prolongación de sus clases de controlador de [[yii\rest\ActiveController]], que le permitirá crear potentes APIs RESTful con un mínimo de código. -Ambos [[yii\rest\Controller]] y [[yii\rest\ActiveController]] proporcionar las siguientes características, algunas de las cuales se describen en detalle en las siguientes secciones: +Ambos [[yii\rest\Controller]] y [[yii\rest\ActiveController]] proporcionan las siguientes características, algunas de las cuales se describen en detalle en las siguientes secciones: * Métodos de Validación HTTP; * [Negociación de contenido y formato de datos](rest-response-formatting.md); @@ -15,14 +15,14 @@ Ambos [[yii\rest\Controller]] y [[yii\rest\ActiveController]] proporcionar las s [[yii\rest\ActiveController]] además provee de las siguientes características: * Un conjunto de acciones comunes necesarias: `index`, `view`, `create`, `update`, `delete`, `options`; -* La autorización del usuario en cuanto a que la acción solicitada y recursos. +* La autorización del usuario en cuanto a la acción solicitada y recursos. ## Creando Clases Controladoras -Al crear una nueva clase de controlador, una convención para nombrar la clase del controlador es utilizar el nombre del tipo de recurso y el uso en singular. Por ejemplo, para servir información del usuario, el controlador puede ser nombrado como `UserController`. +Al crear una nueva clase de controlador, una convención para nombrar la clase del controlador es utilizar el nombre del tipo de recurso y el uso en singular. Por ejemplo, para servir información de usuario, el controlador puede ser nombrado como `UserController`. -Creación de una nueva acción es similar a crear una acción para una aplicación Web. La única diferencia es que en lugar de hacer que el resultado utilicé una vista llamando al método `render()`, para las acciones REST regresá directamente los datos. El [[yii\rest\Controller::serializer|serializer]] y el [[yii\web\Response|response object]] se encargará de la conversión de los datos originales, al formato solicitado. Por ejemplo, +Creación de una nueva acción es similar a crear una acción para una aplicación Web. La única diferencia es que en lugar de hacer que el resultado utilicé una vista llamando al método `render()`, para las acciones REST regresá directamente los datos. El [[yii\rest\Controller::serializer|serializer]] y el [[yii\web\Response|response object]] se encargará de la conversión de los datos originales al formato solicitado. Por ejemplo, ```php public function actionView($id) @@ -34,7 +34,7 @@ public function actionView($id) ## Filtros -La mayoria de las características API REST son proporcionadas por [[yii\rest\Controller]] que son implementadas por los terminos de los [filtros](structure-filters.md). +La mayoría de las características API REST son proporcionadas por [[yii\rest\Controller]] que son implementadas por los terminos de los [filtros](structure-filters.md). En particular, los siguientes filtros se ejecutarán en el orden en que aparecen: * [[yii\filters\ContentNegotiator|contentNegotiator]]: apoya la negociación de contenido, que se explica en la sección el [Formateo de respuestas](rest-response-formatting.md); @@ -42,7 +42,7 @@ En particular, los siguientes filtros se ejecutarán en el orden en que aparecen * [[yii\filters\AuthMethod|authenticator]]: apoya autenticación de usuarios, que se explica en la sección [Autenticación](rest-authentication.md); * [[yii\filters\RateLimiter|rateLimiter]]: apoya la limitación de rango, que se explica en la sección [Límite de Rango](rest-rate-limiting.md). -Estos filtros se declaran nombrándolos en el metodo [[yii\rest\Controller::behaviors()|behaviors()]]. Puede reemplazar este método para configurar los filtros individuales, desactivar algunos de ellos, o añadir sus propios filtros. Por ejemplo, si sólo desea utilizar la autenticación básica HTTP, puede escribir el siguiente código: +Estos filtros se declaran nombrándolos en el método [[yii\rest\Controller::behaviors()|behaviors()]]. Puede reemplazar este método para configurar los filtros individuales, desactivar algunos de ellos o añadir sus propios filtros. Por ejemplo, si sólo desea utilizar la autenticación básica HTTP, puede escribir el siguiente código: ```php use yii\filters\auth\HttpBasicAuth; @@ -60,7 +60,7 @@ public function behaviors() ## Extendiendo `ActiveController` -Si su clase controlador extiende de [[yii\rest\ActiveController]], debe establecer su propiedad [[yii\rest\ActiveController::modelClass||modelClass]] a ser el nombre del recurso la clase que va a servir a través de este controlador. La clase debe extender de [[yii\db\ActiveRecord]]. +Si su clase controlador extiende de [[yii\rest\ActiveController]], debe establecer su propiedad [[yii\rest\ActiveController::modelClass||modelClass]] a ser el nombre del recurso de la clase que va a servir a través de este controlador. La clase debe extender de [[yii\db\ActiveRecord]]. ### Personalizando Acciones @@ -96,7 +96,7 @@ public function prepareDataProvider() } ``` -Por favor, consulte las referencias de clase para las clases de acción individuales para aprender las opciones de configuración que se dispone. +Por favor, consulte las referencias de clases para la clase de acción individuales para aprender las opciones de configuración que se dispone. ### Realizando Comprobación de Acceso From e5c835699ab3b23e275c3561a3b09813f24538b6 Mon Sep 17 00:00:00 2001 From: Marco Da Silva Date: Sun, 19 Oct 2014 21:01:27 -0430 Subject: [PATCH 4/5] Correction file name --- docs/guide-es/{rest-resources.md => rest-controllers.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/guide-es/{rest-resources.md => rest-controllers.md} (100%) diff --git a/docs/guide-es/rest-resources.md b/docs/guide-es/rest-controllers.md similarity index 100% rename from docs/guide-es/rest-resources.md rename to docs/guide-es/rest-controllers.md From ed65d97304ce0ee6763dfe8075f5bd6c68a18929 Mon Sep 17 00:00:00 2001 From: Marco Da Silva Date: Mon, 20 Oct 2014 05:04:31 -0430 Subject: [PATCH 5/5] Update caching-fragment.md --- docs/guide-es/caching-fragment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide-es/caching-fragment.md b/docs/guide-es/caching-fragment.md index a96ab575fc..68bab36ecf 100644 --- a/docs/guide-es/caching-fragment.md +++ b/docs/guide-es/caching-fragment.md @@ -85,7 +85,7 @@ soporte multiples idiomas, la misma pieza del código de la vista puede generar en diferentes idiomas. Por lo tanto, es posible que desees hacer variaciones del mismo contenido almacenado en caché de acuerdo con la actual selección del idioma en la aplicación. -Para especificar variaciones en la memoria caché, configurá la opción [[yii\widgets\FragmentCache::variations|variaciones]] +Para especificar variaciones en la memoria caché, configura la opción [[yii\widgets\FragmentCache::variations|variaciones]] (variations), la cual deberá ser un array de valores escalares, cada uno de ellos representando un factor de variación. Por ejemplo, para hacer que el contenido almacenado en la caché varíe por lenguaje, podrías usar el siguiente código: