From 36bebbfefb15c51449b68713dc159748c3eb7a15 Mon Sep 17 00:00:00 2001 From: Carsten Brandt Date: Sun, 25 Jan 2015 22:12:34 +0100 Subject: [PATCH] use id instead of name for anchor references in the guide fixes #7013 --- docs/guide-es/caching-data.md | 20 +++--- docs/guide-es/caching-fragment.md | 14 ++-- docs/guide-es/caching-http.md | 10 +-- docs/guide-es/concept-aliases.md | 10 +-- docs/guide-es/concept-autoloading.md | 8 +-- docs/guide-es/concept-behaviors.md | 16 ++--- docs/guide-es/concept-configurations.md | 14 ++-- docs/guide-es/concept-di-container.md | 18 ++--- docs/guide-es/concept-events.md | 12 ++-- docs/guide-es/db-dao.md | 2 +- docs/guide-es/helper-array.md | 20 +++--- docs/guide-es/helper-html.md | 28 ++++---- docs/guide-es/helper-overview.md | 2 +- docs/guide-es/rest-authentication.md | 2 +- docs/guide-es/rest-controllers.md | 10 +-- docs/guide-es/rest-error-handling.md | 2 +- docs/guide-es/rest-quick-start.md | 10 +-- docs/guide-es/rest-resources.md | 10 +-- docs/guide-es/rest-response-formatting.md | 4 +- docs/guide-es/runtime-handling-errors.md | 8 +-- docs/guide-es/runtime-logging.md | 18 ++--- docs/guide-es/runtime-requests.md | 10 +-- docs/guide-es/runtime-responses.md | 12 ++-- docs/guide-es/runtime-routing.md | 32 ++++----- docs/guide-es/runtime-sessions-cookies.md | 18 ++--- docs/guide-es/start-databases.md | 14 ++-- docs/guide-es/start-forms.md | 12 ++-- docs/guide-es/start-gii.md | 10 +-- docs/guide-es/start-hello.md | 8 +-- docs/guide-es/start-installation.md | 14 ++-- docs/guide-es/start-workflow.md | 6 +- .../structure-application-components.md | 2 +- docs/guide-es/structure-applications.md | 70 +++++++++---------- docs/guide-es/structure-assets.md | 30 ++++---- docs/guide-es/structure-controllers.md | 32 ++++----- docs/guide-es/structure-entry-scripts.md | 6 +- docs/guide-es/structure-extensions.md | 36 +++++----- docs/guide-es/structure-filters.md | 20 +++--- docs/guide-es/structure-models.md | 22 +++--- docs/guide-es/structure-modules.md | 20 +++--- docs/guide-es/structure-views.md | 46 ++++++------ docs/guide-es/structure-widgets.md | 6 +- docs/guide-es/tutorial-core-validators.md | 42 +++++------ docs/guide-es/tutorial-yii-integration.md | 10 +-- docs/guide-fr/start-databases.md | 14 ++-- docs/guide-fr/start-forms.md | 12 ++-- docs/guide-fr/start-gii.md | 10 +-- docs/guide-fr/start-hello.md | 8 +-- docs/guide-fr/start-installation.md | 14 ++-- docs/guide-fr/start-workflow.md | 6 +- docs/guide-fr/structure-entry-scripts.md | 6 +- docs/guide-it/start-installation.md | 14 ++-- docs/guide-ja/caching-data.md | 20 +++--- docs/guide-ja/caching-fragment.md | 14 ++-- docs/guide-ja/caching-http.md | 10 +-- docs/guide-ja/concept-aliases.md | 10 +-- docs/guide-ja/concept-autoloading.md | 8 +-- docs/guide-ja/concept-behaviors.md | 16 ++--- docs/guide-ja/concept-configurations.md | 14 ++-- docs/guide-ja/concept-di-container.md | 18 ++--- docs/guide-ja/concept-events.md | 12 ++-- docs/guide-ja/db-dao.md | 22 +++--- docs/guide-ja/helper-array.md | 20 +++--- docs/guide-ja/helper-html.md | 28 ++++---- docs/guide-ja/helper-overview.md | 2 +- docs/guide-ja/helper-url.md | 8 +-- docs/guide-ja/input-validation.md | 30 ++++---- docs/guide-ja/output-data-widgets.md | 2 +- docs/guide-ja/output-formatter.md | 12 ++-- docs/guide-ja/rest-authentication.md | 2 +- docs/guide-ja/rest-controllers.md | 10 +-- docs/guide-ja/rest-error-handling.md | 2 +- docs/guide-ja/rest-quick-start.md | 10 +-- docs/guide-ja/rest-resources.md | 10 +-- docs/guide-ja/rest-response-formatting.md | 4 +- docs/guide-ja/runtime-handling-errors.md | 8 +-- docs/guide-ja/runtime-logging.md | 18 ++--- docs/guide-ja/runtime-requests.md | 10 +-- docs/guide-ja/runtime-responses.md | 12 ++-- docs/guide-ja/runtime-routing.md | 32 ++++----- docs/guide-ja/runtime-sessions-cookies.md | 18 ++--- docs/guide-ja/start-databases.md | 14 ++-- docs/guide-ja/start-forms.md | 12 ++-- docs/guide-ja/start-gii.md | 10 +-- docs/guide-ja/start-hello.md | 8 +-- docs/guide-ja/start-installation.md | 14 ++-- docs/guide-ja/start-workflow.md | 6 +- .../structure-application-components.md | 4 +- docs/guide-ja/structure-applications.md | 70 +++++++++---------- docs/guide-ja/structure-assets.md | 30 ++++---- docs/guide-ja/structure-controllers.md | 32 ++++----- docs/guide-ja/structure-entry-scripts.md | 6 +- docs/guide-ja/structure-extensions.md | 36 +++++----- docs/guide-ja/structure-filters.md | 22 +++--- docs/guide-ja/structure-models.md | 22 +++--- docs/guide-ja/structure-modules.md | 20 +++--- docs/guide-ja/structure-views.md | 48 ++++++------- docs/guide-ja/structure-widgets.md | 6 +- docs/guide-ja/tutorial-console.md | 8 +-- docs/guide-ja/tutorial-core-validators.md | 42 +++++------ docs/guide-ja/tutorial-i18n.md | 2 +- docs/guide-ja/tutorial-shared-hosting.md | 4 +- docs/guide-ja/tutorial-yii-integration.md | 10 +-- docs/guide-pt-BR/start-databases.md | 14 ++-- docs/guide-pt-BR/start-forms.md | 12 ++-- docs/guide-pt-BR/start-gii.md | 10 +-- docs/guide-pt-BR/start-hello.md | 8 +-- docs/guide-pt-BR/start-installation.md | 14 ++-- docs/guide-pt-BR/start-workflow.md | 6 +- .../structure-application-components.md | 4 +- docs/guide-pt-BR/structure-applications.md | 70 +++++++++---------- docs/guide-pt-BR/structure-assets.md | 30 ++++---- docs/guide-pt-BR/structure-controllers.md | 32 ++++----- docs/guide-pt-BR/structure-entry-scripts.md | 6 +- docs/guide-pt-BR/structure-extensions.md | 36 +++++----- docs/guide-pt-BR/structure-filters.md | 22 +++--- docs/guide-pt-BR/structure-models.md | 22 +++--- docs/guide-pt-BR/structure-modules.md | 20 +++--- docs/guide-pt-BR/structure-views.md | 48 ++++++------- docs/guide-pt-BR/structure-widgets.md | 6 +- docs/guide-ru/caching-data.md | 18 ++--- docs/guide-ru/caching-fragment.md | 14 ++-- docs/guide-ru/caching-http.md | 10 +-- docs/guide-ru/concept-aliases.md | 10 +-- docs/guide-ru/concept-autoloading.md | 8 +-- docs/guide-ru/concept-behaviors.md | 16 ++--- docs/guide-ru/concept-configurations.md | 14 ++-- docs/guide-ru/concept-di-container.md | 18 ++--- docs/guide-ru/concept-events.md | 12 ++-- docs/guide-ru/input-validation.md | 30 ++++---- docs/guide-ru/rest-authentication.md | 2 +- docs/guide-ru/rest-controllers.md | 10 +-- docs/guide-ru/rest-quick-start.md | 8 +-- docs/guide-ru/rest-resources.md | 10 +-- docs/guide-ru/rest-response-formatting.md | 4 +- docs/guide-ru/runtime-requests.md | 10 +-- docs/guide-ru/runtime-responses.md | 12 ++-- docs/guide-ru/start-databases.md | 14 ++-- docs/guide-ru/start-forms.md | 12 ++-- docs/guide-ru/start-gii.md | 10 +-- docs/guide-ru/start-hello.md | 8 +-- docs/guide-ru/start-installation.md | 14 ++-- docs/guide-ru/start-workflow.md | 6 +- .../structure-application-components.md | 2 +- docs/guide-ru/structure-applications.md | 70 +++++++++---------- docs/guide-ru/structure-controllers.md | 32 ++++----- docs/guide-ru/structure-entry-scripts.md | 6 +- docs/guide-ru/structure-extensions.md | 36 +++++----- docs/guide-ru/structure-filters.md | 22 +++--- docs/guide-ru/structure-modules.md | 20 +++--- docs/guide-ru/structure-views.md | 48 ++++++------- docs/guide-ru/structure-widgets.md | 6 +- docs/guide-ru/tutorial-core-validators.md | 42 +++++------ docs/guide-ru/tutorial-i18n.md | 2 +- docs/guide-ru/tutorial-yii-integration.md | 10 +-- docs/guide-uk/caching-fragment.md | 14 ++-- docs/guide-uk/concept-aliases.md | 10 +-- docs/guide-uk/concept-autoloading.md | 8 +-- docs/guide-uk/start-databases.md | 14 ++-- docs/guide-uk/start-forms.md | 12 ++-- docs/guide-uk/start-gii.md | 10 +-- docs/guide-uk/start-hello.md | 8 +-- docs/guide-uk/start-installation.md | 14 ++-- docs/guide-uk/start-workflow.md | 6 +- .../structure-application-components.md | 4 +- docs/guide-uk/structure-applications.md | 70 +++++++++---------- docs/guide-uk/structure-controllers.md | 32 ++++----- docs/guide-uk/structure-entry-scripts.md | 6 +- docs/guide-zh-CN/caching-data.md | 18 ++--- docs/guide-zh-CN/caching-fragment.md | 14 ++-- docs/guide-zh-CN/caching-http.md | 10 +-- docs/guide-zh-CN/concept-aliases.md | 10 +-- docs/guide-zh-CN/concept-autoloading.md | 8 +-- docs/guide-zh-CN/concept-configurations.md | 12 ++-- docs/guide-zh-CN/concept-di-container.md | 18 ++--- docs/guide-zh-CN/input-validation.md | 26 +++---- docs/guide-zh-CN/output-formatter.md | 12 ++-- docs/guide-zh-CN/rest-quick-start.md | 8 +-- docs/guide-zh-CN/rest-response-formatting.md | 4 +- docs/guide-zh-CN/runtime-handling-errors.md | 8 +-- docs/guide-zh-CN/runtime-responses.md | 12 ++-- docs/guide-zh-CN/runtime-routing.md | 8 +-- docs/guide-zh-CN/runtime-sessions-cookies.md | 18 ++--- docs/guide-zh-CN/start-databases.md | 14 ++-- docs/guide-zh-CN/start-forms.md | 12 ++-- docs/guide-zh-CN/start-gii.md | 10 +-- docs/guide-zh-CN/start-hello.md | 8 +-- docs/guide-zh-CN/start-installation.md | 14 ++-- docs/guide-zh-CN/start-workflow.md | 6 +- .../structure-application-components.md | 4 +- docs/guide-zh-CN/structure-applications.md | 70 +++++++++---------- docs/guide-zh-CN/structure-assets.md | 30 ++++---- docs/guide-zh-CN/structure-controllers.md | 32 ++++----- docs/guide-zh-CN/structure-entry-scripts.md | 6 +- docs/guide-zh-CN/structure-extensions.md | 36 +++++----- docs/guide-zh-CN/structure-filters.md | 22 +++--- docs/guide-zh-CN/structure-models.md | 22 +++--- docs/guide-zh-CN/structure-modules.md | 20 +++--- docs/guide-zh-CN/structure-views.md | 48 ++++++------- docs/guide-zh-CN/structure-widgets.md | 8 +-- docs/guide-zh-CN/tutorial-core-validators.md | 42 +++++------ docs/guide-zh-CN/tutorial-yii-integration.md | 10 +-- docs/guide/caching-data.md | 20 +++--- docs/guide/caching-fragment.md | 14 ++-- docs/guide/caching-http.md | 10 +-- docs/guide/concept-aliases.md | 10 +-- docs/guide/concept-autoloading.md | 8 +-- docs/guide/concept-behaviors.md | 16 ++--- docs/guide/concept-configurations.md | 14 ++-- docs/guide/concept-di-container.md | 18 ++--- docs/guide/concept-events.md | 12 ++-- docs/guide/db-active-record.md | 2 +- docs/guide/db-dao.md | 22 +++--- docs/guide/helper-array.md | 20 +++--- docs/guide/helper-html.md | 28 ++++---- docs/guide/helper-overview.md | 2 +- docs/guide/helper-url.md | 8 +-- docs/guide/input-validation.md | 30 ++++---- docs/guide/output-data-widgets.md | 2 +- docs/guide/output-formatter.md | 12 ++-- docs/guide/rest-authentication.md | 2 +- docs/guide/rest-controllers.md | 10 +-- docs/guide/rest-error-handling.md | 2 +- docs/guide/rest-quick-start.md | 10 +-- docs/guide/rest-resources.md | 10 +-- docs/guide/rest-response-formatting.md | 4 +- docs/guide/runtime-handling-errors.md | 8 +-- docs/guide/runtime-logging.md | 18 ++--- docs/guide/runtime-requests.md | 10 +-- docs/guide/runtime-responses.md | 12 ++-- docs/guide/runtime-routing.md | 32 ++++----- docs/guide/runtime-sessions-cookies.md | 18 ++--- docs/guide/start-databases.md | 14 ++-- docs/guide/start-forms.md | 12 ++-- docs/guide/start-gii.md | 10 +-- docs/guide/start-hello.md | 8 +-- docs/guide/start-installation.md | 14 ++-- docs/guide/start-workflow.md | 6 +- .../guide/structure-application-components.md | 4 +- docs/guide/structure-applications.md | 70 +++++++++---------- docs/guide/structure-assets.md | 30 ++++---- docs/guide/structure-controllers.md | 32 ++++----- docs/guide/structure-entry-scripts.md | 6 +- docs/guide/structure-extensions.md | 36 +++++----- docs/guide/structure-filters.md | 22 +++--- docs/guide/structure-models.md | 22 +++--- docs/guide/structure-modules.md | 20 +++--- docs/guide/structure-views.md | 48 ++++++------- docs/guide/structure-widgets.md | 6 +- docs/guide/tutorial-console.md | 8 +-- docs/guide/tutorial-core-validators.md | 42 +++++------ docs/guide/tutorial-i18n.md | 2 +- docs/guide/tutorial-shared-hosting.md | 4 +- docs/guide/tutorial-yii-integration.md | 10 +-- extensions/apidoc/helpers/ApiMarkdown.php | 3 +- .../templates/html/views/constSummary.php | 2 +- .../apidoc/templates/html/views/type.php | 8 +-- 257 files changed, 2082 insertions(+), 2083 deletions(-) diff --git a/docs/guide-es/caching-data.md b/docs/guide-es/caching-data.md index 5cb14a47030..82b94fe560c 100644 --- a/docs/guide-es/caching-data.md +++ b/docs/guide-es/caching-data.md @@ -20,7 +20,7 @@ if ($data === false) { ``` -## Componentes de Caché +## Componentes de Caché El almacenamiento de datos en caché depende de los llamados *cache components* (componentes de caché) los cuales representan diferentes tipos de almacenamiento en caché, como por ejemplo en memoria, en archivos o en base de datos. @@ -66,7 +66,7 @@ el código que utiliza la caché. Por ejemplo, podrías modificar la configuraci > Nota: Puedes registrar múltiples componentes de aplicación de caché. El componente llamado `cache` es usado por defecto por muchas clases caché-dependiente (ej. [[yii\web\UrlManager]]). -### Almacenamientos de Caché Soportados +### Almacenamientos de Caché Soportados Yii proporciona varios componentes de caché que pueden almacenar datos en diferentes medios. A continuación se muestra un listado con los componentes de caché disponibles: @@ -84,7 +84,7 @@ se muestra un listado con los componentes de caché disponibles: > Nota: Puedes utilizar diferentes tipos de almacenamiento de caché en la misma aplicación. Una estrategia común es la de usar almacenamiento de caché en memoria para almacenar datos que son pequeños pero que son utilizados constantemente (ej. datos estadísticos), y utilizar el almacenamiento de caché en archivos o en base de datos para guardar datos que son grandes y utilizados con menor frecuencia (ej. contenido de página). -## API de Caché +## API de Caché Todos los componentes de almacenamiento de caché provienen de la misma clase "padre" [[yii\caching\Cache]] y por lo tanto soportan la siguiente API: @@ -111,7 +111,7 @@ $value2 = $cache['var2']; // equivalente a: $value2 = $cache->get('var2'); ``` -### Claves de Caché +### Claves de Caché Cada elemento de datos almacenado en caché se identifica por una clave. Cuando se almacena un elemento de datos en la memoria caché, se debe especificar una clave. Más tarde, cuando se recupera el elemento de datos de la memoria caché, se debe proporcionar la clave correspondiente. @@ -144,7 +144,7 @@ Cuando en un mismo almacenamiento en caché es utilizado por diferentes aplicaci Para garantizar la interoperabilidad, deberían utilizarse sólo caracteres alfanuméricos. -### Caducidad de Caché +### Caducidad de Caché Un elemento de datos almacenado en la memoria caché permanecerá en ella para siempre, a menos que sea removida de alguna manera debido a alguna directiva de caché (ej. el espacio de almacenamiento en caché está lleno y los datos más antiguos se eliminan). Para cambiar este comportamiento, podrías proporcionar un parámetro de caducidad al llamar [[yii\caching\Cache::set()|set()]] para guardar el elemento de datos. El parámetro nos indica por cuántos segundos el elemento se mantendrá válido en memoria caché. Cuando llames [[yii\caching\Cache::get()|get()]] para recuperar el elemento, si el tiempo de caducidad ha pasado, el método devolverá `false`, indicando que el elemento de datos no ha sido encontrado en la memoria caché. Por ejemplo, @@ -161,7 +161,7 @@ if ($data === false) { ``` -### Dependencias de Caché +### Dependencias de Caché Además de configurar el tiempo de expiración, los datos almacenados en caché pueden también ser invalidados conforme a algunos cambios en la caché de dependencias. Por ejemplo, [[yii\caching\FileDependency]] representa la dependencia del tiempo de modificación del archivo. Cuando esta dependencia cambia, significa que el archivo correspondiente ha cambiado. Como resultado, cualquier contenido anticuado que sea encontrado en la caché debería ser invalidado y la llamada a [[yii\caching\Cache::get()|get()]] debería retornar falso. @@ -191,7 +191,7 @@ Aquí abajo se muestra un sumario de las dependencias disponibles: con el mismo nombre del grupo a la vez llamando a [[yii\caching\TagDependency::invalidate()]]. -## Consultas en Caché +## Consultas en Caché Las consultas en caché es una característica especial de caché construido sobre el almacenamiento de caché de datos. Se proporciona para almacenar en caché el resultado de consultas a la base de datos. @@ -213,7 +213,7 @@ El almacenamiento en caché de consultas se puede usar para [DAO](db-dao.md), as > Nota: Algunos DBMS (ej. [MySQL](http://dev.mysql.com/doc/refman/5.1/en/query-cache.html)) también soporta el almacenamiento en caché desde el mismo servidor de la BD. Puedes optar por utilizar cualquiera de los mecanismos de memoria caché. El almacenamiento en caché de consultas previamente descrito tiene la ventaja que de que se puede especificar dependencias de caché de una forma flexible y son potencialmente mucho más eficientes. -### Configuraciones +### Configuraciones Las consultas en caché tienen tres opciones configurables globales a través de [[yii\db\Connection]]: @@ -224,7 +224,7 @@ Las consultas en caché tienen tres opciones configurables globales a través de Por defecto es `'cache'`. El almacenamiento en caché de consultas se habilita sólo si hay un componente de la aplicación de caché válida. -### Usos +### Usos Puedes usar [[yii\db\Connection::cache()]] si tienes multiples consultas SQL que necesitas a aprovechar el cacheo de consultas. El uso es de la siguiente manera, @@ -287,7 +287,7 @@ $result = $db->cache(function ($db) { ``` -### Limitaciones +### Limitaciones El almacenamiento en caché de consultas no funciona con los resultados de consulta que contienen controladores de recursos. Por ejemplo, cuando se utiliza el tipo de columna `BLOB` en algunos DBMS, el resultado de la consulta devolverá un recurso para manejar los datos de la columna. diff --git a/docs/guide-es/caching-fragment.md b/docs/guide-es/caching-fragment.md index 68bab36ecfd..3d8cd174c18 100644 --- a/docs/guide-es/caching-fragment.md +++ b/docs/guide-es/caching-fragment.md @@ -28,14 +28,14 @@ Como en la [caché de datos](caching-data.md), un `$id` (clave) único es necesa caché. -## Opciones de Caché +## Opciones de Caché Puedes especificar opciones adicionales para la caché de fragmentos pasando el array de opciones como segundo parametro del método [[yii\base\View::beginCache()|beginCache()]]. Entre bastidores, este array de opciones se utiliza para configurar el widget [[yii\widgets\FragmentCache]] que es en realidad el que implementa la funcionalidad de la caché de fragmentos. -### Duración +### Duración Quizás la opción más utilizada en la caché de fragmentos es [[yii\widgets\FragmentCache::duration|duración]]. Ésta especifica cuántos segundos el contenido puede permanecer como válido en la memoria caché. El siguiente código almacena @@ -53,7 +53,7 @@ if ($this->beginCache($id, ['duration' => 3600])) { Si la opción no está activada, se tomará el valor por defecto 60, lo que significa que el contenido almacenado en caché expirará en 60 segundos. -### Dependencias +### Dependencias Como en la [caché de datos](caching-data.md#cache-dependencies), el fragmento de contenido que está siendo almacenado en caché también puede tener dependencias. Por ejemplo, el contenido de un artículo que se muestre depende de si el mensaje se @@ -78,7 +78,7 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ``` -### Variaciones +### Variaciones El contenido almacenado en caché puede variar de acuerdo a ciertos parámetros. Por ejemplo, para una aplicación Web que soporte multiples idiomas, la misma pieza del código de la vista puede generar el contenido almacenado en caché @@ -99,7 +99,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ``` -### Alternando el Almacenamiento en Caché +### Alternando el Almacenamiento en Caché Puede que a veces quieras habilitar la caché de fragmentos únicamente cuando ciertas condiciones se cumplan. Por ejemplo, para una página que muestra un formulario, tal vez quieras guardarlo en la caché cuando es inicialmente solicitado (a @@ -117,7 +117,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## Almacenamiento en Caché Anidada +## Almacenamiento en Caché Anidada El almacenamiento en caché de fragmentos se puede anidar. Es decir, un fragmento de caché puede ser encerrado dentro de otro fragmento que también se almacena en caché. Por ejemplo, los comentarios se almacenan en una caché de fragmento @@ -151,7 +151,7 @@ dependencias de las cachés anidadas, de lo contrario los fragmentos internos qu manteniendo en el fragmento externo. -## Contenido Dinámico +## Contenido Dinámico Cuando se usa la caché de fragmentos, podrías encontrarte en la situación que un fragmento grande de contenido es relavitamente estático excepto en uno u otro lugar. Por ejemplo, la cabeza de una página (header) puede que muestre el diff --git a/docs/guide-es/caching-http.md b/docs/guide-es/caching-http.md index 25f04861bc8..391da78a388 100644 --- a/docs/guide-es/caching-http.md +++ b/docs/guide-es/caching-http.md @@ -15,7 +15,7 @@ consultas: * [[yii\filters\HttpCache::cacheControlHeader|Cache-Control]] -## La Cabecera `Last-Modified` +## La Cabecera `Last-Modified` La cabecera `Last-Modified` usa un sello de tiempo para indicar si la página ha sido modificada desde que el cliente la almacena en la caché. @@ -59,7 +59,7 @@ regenerar la página, y el navegador usará la versión caché del lado del clie lado del servidor y la transmisión del contenido de la página son ambos omitidos. -## La Cabecera `ETag` +## La Cabecera `ETag` La cabecera "Entity Tag" (o para abreviar `ETag`) usa un hash para representar el contenido de una página. Si la página ha sido cambiada, el hash también cambiará. Al comparar el hash guardado en el lado del cliente con el hash generado en @@ -113,7 +113,7 @@ expresión sencilla para invalidar la caché si la página ha sido modificada. > Nota: En cumplimiento con [RFC 7232](http://tools.ietf.org/html/rfc7232#section-2.4), `HttpCache` enviará ambas cabeceras `ETag` y `Last-Modified` si ambas están configuradas. Y si el clientes envía tanto la cabecera `If-None-Match` como la cabecera `If-Modified-Since`, solo la primera será respetada. -## La Cabecera `Cache-Control` +## La Cabecera `Cache-Control` La cabecera `Cache-Control` especifica la directiva general de la caché para páginas. Puedes enviarla configurando la propiedad [[yii\filters\HttpCache::cacheControlHeader]] con el valor de la cabecera. Por defecto, la siguiente cabecera @@ -123,7 +123,7 @@ será enviada: Cache-Control: public, max-age=3600 ``` -## Limitador de la Sesión de Caché +## Limitador de la Sesión de Caché Cuando una página utiliza la sesión, PHP enviará automáticamente cabeceras HTTP relacionadas con la caché tal y como se especifican en `session.cache_limiter` de la configuración INI de PHP. Estas cabeceras pueden interferir o deshabilitar @@ -134,7 +134,7 @@ automáticamente el envío de estas cabeceras. Si deseas modificar este comporta para una mejor explicación sobre esos valores. -## Implicaciones SEO +## Implicaciones SEO Los robots de motores de búsqueda tienden a respetar las cabeceras de caché. Dado que algunos `crawlers` tienen limitado el número de páginas que pueden rastrear por dominios dentro de un cierto período de tiempo, la introducción de cabeceras diff --git a/docs/guide-es/concept-aliases.md b/docs/guide-es/concept-aliases.md index 9fc81b94b84..ecaee1a160a 100644 --- a/docs/guide-es/concept-aliases.md +++ b/docs/guide-es/concept-aliases.md @@ -6,7 +6,7 @@ en tu código. Un alias debe comenzar con un cáracter `@` para que así pueda s Por ejemplo, el alias `@yii` representa la ruta de instalación de la librería Yii, mientras que `@web` representa la URL base la aplicación que actualmente se está ejecutando. -Definiendo Alias +Definiendo Alias ---------------- Puedes llamar a [[Yii::setAlias()]] para definir un alias para una determinada ruta de archivo o URL. Por ejemplo, @@ -48,7 +48,7 @@ return [ ``` -Resolución de Alias +Resolución de Alias ------------------- Puedes llamar [[Yii::getAlias()]] para resolver un alias de raíz en la ruta o URL que representa. El mismo método puede @@ -80,7 +80,7 @@ Yii::getAlias('@foo/bar/file.php'); // muestra: /path2/bar/file.php Si `@foo/bar` no está definido como un alias de raíz, la última declaración mostraría `/path/to/foo/bar/file.php`. -Usando Alias +Usando Alias ------------ Los alias son utilizados en muchos lugares en Yii sin necesidad de llamar [[Yii::getAlias()]] para convertirlos en rutas/URLs. @@ -98,7 +98,7 @@ $cache = new FileCache([ Por favor, presta atención a la documentación API para ver si una propiedad o el parámetro de un método soporta alias. -Alias Predefinidos +Alias Predefinidos ------------------ Yii predefine un conjunto de alias para aliviar la necesidad de hacer referencia a rutas de archivo o URLs que son @@ -118,7 +118,7 @@ mientras que el resto de los alias están definidos en el constructor de la apli [configuración](concept-configurations.md) de la aplicación. -Alias en Extensiones +Alias en Extensiones -------------------- Un alias se define automaticamente por cada [extensión](structure-extensions.md) que ha sido instalada a través de Composer. diff --git a/docs/guide-es/concept-autoloading.md b/docs/guide-es/concept-autoloading.md index e7e65753f12..900ad258c63 100644 --- a/docs/guide-es/concept-autoloading.md +++ b/docs/guide-es/concept-autoloading.md @@ -10,7 +10,7 @@ El cargador se instala cuando incluyes el archivo `Yii.php`. ten en cuenta que el contenido que describimos aquí también se aplica a la autocarga de interfaces y rasgos (Traits). -Usando el Autocargador de Yii +Usando el Autocargador de Yii ----------------------------- Para utilizar el cargador automático de clases de Yii, deberías seguir dos reglas básicas cuando desarrolles y nombres tus @@ -40,7 +40,7 @@ poner las clases `front-end` bajo el espacio de nombres `frontend` mientras que `backend`. Esto permitirá que estas clases sean automaticamente cargadas por el autocargador de Yii. -Mapa de Clases +Mapa de Clases -------------- El autocargador de clases de Yii soporta el *mapa de clases*, que mapea nombres de clases to sus correpondientes rutas de @@ -59,7 +59,7 @@ clases en el proceso [bootstrapping](runtime-bootstrapping.md) de la aplicación antes de que tus clases sean usadas. -Usando otros Autocargadores +Usando otros Autocargadores --------------------------- Debido a que Yii incluye Composer como un gestor de dependencias y extensions, es recomendado que también instales el @@ -85,7 +85,7 @@ ser autocargables. incluirlo en tu [script de entrada](structure-entry-scripts.md). -Carga Automática de Clases de Extensiones +Carga Automática de Clases de Extensiones ----------------------------------------- El autocargador de Yii es capaz de autocargar clases de [extensiones](structure-extensions.md). El único requirimiento es diff --git a/docs/guide-es/concept-behaviors.md b/docs/guide-es/concept-behaviors.md index 5b11f8b407f..fbbbf1676d3 100644 --- a/docs/guide-es/concept-behaviors.md +++ b/docs/guide-es/concept-behaviors.md @@ -10,7 +10,7 @@ comportamiento puede responder a [eventos](concept-events.md) disparados por el o adaptar a la ejecución normal del código del componente. -Definiendo comportamientos +Definiendo comportamientos -------------------------- Para definir un comportamiento, se debe crear una clase que exiende [[yii\base\Behavior]], o se extiende una clase hija. Por ejemplo: @@ -95,7 +95,7 @@ function ($event) { ``` -Vinculando Comportamientos +Vinculando Comportamientos -------------------------- Puedes vincular un comportamiento a un [[yii\base\Component|componente]] ya sea estática o dinámicamente. La primera forma @@ -189,7 +189,7 @@ También puedes asociar comportamientos a traves de [configuraciones](concept-co Para más detalles, por favor visita la sección [Configuraciones](concept-configurations.md#configuration-format). -Usando comportamientos +Usando comportamientos ---------------------- Para poder utilizar un comportamiento, primero tienes que unirlo a un [[yii\base\Component|componente]] según las instrucciones anteriores. Una vez que un comportamiento ha sido vinculado a un componente, su uso es sencillo. @@ -230,7 +230,7 @@ $behaviors = $component->getBehaviors(); ``` -Desasociar Comportamientos +Desasociar Comportamientos -------------------------- Para desasociar un comportamiento, puedes llamar el método [[yii\base\Component::detachBehavior()]] con el nombre con el @@ -247,7 +247,7 @@ $component->detachBehaviors(); ``` -Utilizando `TimestampBehavior` +Utilizando `TimestampBehavior` ----------------------------- Para terminar, vamos a echar un vistazo a [[yii\behaviors\TimestampBehavior]]. Este comportamiento soporta de forma @@ -306,7 +306,7 @@ $user->touch('login_time'); ``` -Comparación con Traits +Comparación con Traits ---------------------- Mientras que los comportamientos son similares a [traits](http://www.php.net/traits) en cuanto que ambos "inyectan" sus @@ -314,7 +314,7 @@ métodos y propiedades a la clase primaria, son diferentes en muchos aspectos. tienen sus ventajas y desventajas. Son más como complementos el uno al otro en lugar de alternativas. -### Razones para utilizar comportamientos +### Razones para utilizar comportamientos Las clases de comportamientos, como todas las clases, soportan herencias. Traits, por otro lado, pueden ser considerados como un copia-y-pega de PHP. Ellos no soportan la herencia de clases. @@ -331,7 +331,7 @@ automáticamente resuelto respetando al que ha sido asociado primero. El conflicto de nombres en traits requiere que manualmente sean resueltos cambiando el nombre de las propiedades o métodos afectados. -### Razones para utilizar los Traits +### Razones para utilizar los Traits Los Traits son mucho más eficientes que los comportamientos debido a que los últimos son objetos que consumen tiempo y memoria. diff --git a/docs/guide-es/concept-configurations.md b/docs/guide-es/concept-configurations.md index fc33f70f377..a59447f1c9d 100644 --- a/docs/guide-es/concept-configurations.md +++ b/docs/guide-es/concept-configurations.md @@ -26,7 +26,7 @@ Yii::configure($object, $config); Tenga en cuenta que en este caso, la matriz de configuración no debe contener un elemento `class`. -## Formato de Configuración +## Formato de Configuración El formato de una configuración se puede describir formalmente como: @@ -63,12 +63,12 @@ A continuación se muestra un ejemplo de una configuración con los valores de p ``` -## Usando Configuraciones +## Usando Configuraciones Las configuraciones se utilizan en muchos lugares en Yii. Al comienzo de esta sección, hemos demostrado cómo crear un objeto según una configuración mediante el uso de [[Yii::CreateObject()]]. En este apartado, vamos a describir configuraciones de aplicaciones y configuraciones widget - dos principales usos de configuraciones. -### Configuraciones de aplicación +### Configuraciones de aplicación Configuración para una [aplicación](structure-applications.md) es probablemente una de las configuraciones más complejas. Esto se debe a que la clase [[yii\web\Application|aplicación]] tiene un montón de propiedades y eventos configurables. Más importante aún, su propiedad [[yii\web\Application::components|componentes]] que puede recibir una gran variedad de configuraciones para crear componentes que se registran a través de la aplicación. Lo siguiente es un resumen del archivo de configuración de la aplicación para la [plantilla básica de la aplicación](start-installation.md). @@ -113,7 +113,7 @@ La configuración no tiene una clave `class`. Esto es porque se utiliza como sig Para más detalles sobre la configuración de la propiedad `components` de una aplicación se puede encontrar en la sección [Aplicación](structure-applications.md) y la sección [Localizador de Servicio](concept-service-locator.md). -### Configuración Widget +### Configuración Widget Cuando se utiliza [widgets](structure-widgets.md), a menudo es necesario utilizar las configuraciones para personalizar las propiedades de widgets. Tanto los metodos [[yii\base\Widget::widget()]] y [[yii\base\Widget::begin()]] pueden usarse para crear un widget. Toman un arreglo de configuración, como el siguiente, @@ -135,7 +135,7 @@ El código anterior crea un widget `Menu` e inicializa su propiedad `activeItems Tenga en cuenta que debido a que el nombre de la clase ya está dado, la matriz de configuración no deben tener la clave `class`. -## Archivos de Configuración +## Archivos de Configuración Cuando una configuración es muy compleja, una práctica común es almacenarla en uno o múltiples archivos PHP, conocidos como *archivos de configuración*. Un archivo de configuración devuelve un array de PHP que representa la configuración. Por ejemplo, es posible mantener una configuración de la aplicación en un archivo llamado `web.php`, como el siguiente, @@ -185,7 +185,7 @@ $config = require('path/to/web.php'); ``` -## Configuraciones por Defecto +## Configuraciones por Defecto El método [[Yii::createObject()]] es implementado en base a [contenedor de inyección de dependencia](concept-di-container.md). Le permite especificar un conjunto de los llamados *configuraciones predeterminadas* que se aplicarán a todos los casos de las clases especificadas cuando se crean utilizando [[Yii::createObject()]]. Las configuraciones por defecto se puede especificar llamando `Yii::$container->set()` en el código [bootstrapping](runtime-bootstrapping.md). @@ -199,7 +199,7 @@ Por ejemplo, si desea personalizar [[yii\widgets\LinkPager]] para que TODO enlac Sin utilizar las configuraciones predeterminadas, usted tendría que configurar `maxButtonCount` en cada lugar en el que utiliza enlace paginador. -## Constantes de Entorno +## Constantes de Entorno Las configuraciones a menudo varían de acuerdo al entorno en que se ejecuta una aplicación. Por ejemplo, en el entorno de desarrollo, es posible que desee utilizar una base de datos llamada `mydb_dev`, mientras que en servidor de producción es posible que desee utilizar la base de datos `mydb_prod`. Para facilitar la conmutación de entornos, Yii proporciona una constante llamado `YII_ENV` que se puede definir en el [script de entrada](structure-entry-scripts.md) de su aplicación. Por ejemplo, diff --git a/docs/guide-es/concept-di-container.md b/docs/guide-es/concept-di-container.md index 5e643fbc911..80eea95fce7 100644 --- a/docs/guide-es/concept-di-container.md +++ b/docs/guide-es/concept-di-container.md @@ -6,7 +6,7 @@ objetos dependientes. El [articulo de Martin](http://martinfowler.com/articles/i explicación de porque son útiles los contenedores de ID. A continuación explicaremos como usar el contenedor de ID que proporciona Yii. -Inyección de Dependencias +Inyección de Dependencias ------------------------- Yii proporciona la función de contenedor de ID mediante la clase [[yii\di\Container]]. Soporta los siguientes tipos @@ -16,7 +16,7 @@ de ID: * Inyección de setters y propiedades; * Inyección de [llamadas de retorno PHP](http://php.net/manual/es/language.types.callable.php); -### Inyección de Constructores +### Inyección de Constructores El contenedor de ID soporta inyección de constructores con la ayuda de los indicios (hint) de tipo para los parámetros del constructor. Los indicios de tipo le proporcionan información al contenedor para saber cuáles son las clases o @@ -37,7 +37,7 @@ $bar = new Bar; $foo = new Foo($bar); ``` -### Inyección de Setters y Propiedades +### Inyección de Setters y Propiedades La inyección de setters y propiedades se admite a través de [configuraciones](concept-configurations.md). Cuando se registra una dependencia o se crea un nuevo objeto, se puede proporcionar una configuración que usará el contenedor @@ -69,7 +69,7 @@ $container->get('Foo', [], [ ]); ``` -### Inyección de Llamadas de retorno PHP +### Inyección de Llamadas de retorno PHP En este caso, el contenedor usará una llamada de retorno PHP registrada para construir una nueva instancia de una clase. La llamada de retorno se responsabiliza de que dependencias debe inyectar al nuevo objeto creado. Por ejemplo, @@ -82,7 +82,7 @@ $container->set('Foo', function () { $foo = $container->get('Foo'); ``` -Registro de dependencias +Registro de dependencias ------------------------ Se puede usar [[yii\di\Container::set()]] para registrar dependencias. El registro requiere un nombre de dependencia @@ -150,7 +150,7 @@ $container->setSingleton('yii\db\Connection', [ ]); ``` -Resolución de Dependencias +Resolución de Dependencias -------------------------- Una ves se hayan registrado las dependencias, se puede usar el contenedor de ID para crear nuevos objetos, y el @@ -238,7 +238,7 @@ $finder = new UserFinder($db); $lister = new UserLister($finder); ``` -Uso Practico +Uso Practico ------------ Yii crea un contenedor de ID cuando se incluye el archivo `Yii.php` en el @@ -300,7 +300,7 @@ instanciada. Esto se debe a que necesitamos indicar al contenedor de ID como tra Ahora si se accede al contenedor nuevamente, se creará una instancia de `app\components\BookingService` y se inyectará a como tercer parámetro al constructor del controlador. -Cuando Registrar Dependencias +Cuando Registrar Dependencias ----------------------------- El registro de dependencias debe hacerse lo antes posible debido a que las dependencias se necesitan cuando se crean @@ -311,7 +311,7 @@ nuevos objetos. A continuación se listan practicas recomendadas: * Siendo desarrolladores de una [extension](structure-extensions.md) redistribuible, podemos registrar dependencias en la clase de boostraping de la extensión. -Resumen +Resumen ------- Tanto la inyección de dependencias como el [localizador de servicios](concept-service-locator.md) son patrones de diff --git a/docs/guide-es/concept-events.md b/docs/guide-es/concept-events.md index 4d22ffc16ce..741cc5d980b 100644 --- a/docs/guide-es/concept-events.md +++ b/docs/guide-es/concept-events.md @@ -9,7 +9,7 @@ el correcto envío del mensaje, se puede, simplemente, añadir un código de seg Yii introduce una clase base [[yii\base\Component]] para soportar eventos. Si una clase necesita lanzar un evento, este debe extender a [[yii\base\Component]] o a una clase hija. -Gestor de Eventos +Gestor de Eventos ----------------- Un gestor de eventos es una @@ -40,7 +40,7 @@ Un gestor de eventos puede obtener la siguiente información acerca de un evento (se explicará más adelante) -Añadir Gestores de Eventos +Añadir Gestores de Eventos -------------------------- Se puede añadir un gestor a un evento llamando al método [[yii\base\Component::on()]]. Por ejemplo: @@ -104,7 +104,7 @@ $foo->on(Foo::EVENT_HELLO, function ($event) { }, $data, false); ``` -Lanzamiento de Eventos +Lanzamiento de Eventos ---------------------- Los eventos se lanzan llamando al método [[yii\base\Component::trigger()]]. El método requiere un *nombre de evento*, @@ -169,7 +169,7 @@ class Mailer extends Component Cuando se lanza el método [[yii\base\Component::trigger()]], se ejecutarán todos los gestores adjuntos al evento. -Desadjuntar Gestores de Evento +Desadjuntar Gestores de Evento ------------------------------ Para desadjuntar un gestor de un evento, se puede ejecutar el método [[yii\base\Component::off()]]. Por ejemplo: @@ -199,7 +199,7 @@ parámetro: $foo->off(Foo::EVENT_HELLO); ``` -Nivel de Clase (Class-Level) Gestores de Eventos +Nivel de Clase (Class-Level) Gestores de Eventos ------------------------------------------------ En las subsecciones anteriores se ha descrito como adjuntar un gestor a un evento a *nivel de instancia*. A veces, se @@ -260,7 +260,7 @@ Event::off(Foo::className(), Foo::EVENT_HELLO, $handler); Event::off(Foo::className(), Foo::EVENT_HELLO); ``` -Eventos Globales +Eventos Globales ---------------- Yii soporta los llamados *eventos globales*, que en realidad es un truco basado en el gestor de eventos descrito diff --git a/docs/guide-es/db-dao.md b/docs/guide-es/db-dao.md index cccb0527db5..a4a5058d5c9 100644 --- a/docs/guide-es/db-dao.md +++ b/docs/guide-es/db-dao.md @@ -206,7 +206,7 @@ $connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execu $connection->createCommand()->delete('user', 'status = 0')->execute(); ``` -Entrecomillado de los Nombres de las Tablas y las Columnas +Entrecomillado de los Nombres de las Tablas y las Columnas ---------------------------------------------------------- Para hacer que los nombres de las columnas y las tablas sean seguros para usarse en las consultas, se puede utilizar Yii diff --git a/docs/guide-es/helper-array.md b/docs/guide-es/helper-array.md index 9437b88e946..0bfb01c0266 100644 --- a/docs/guide-es/helper-array.md +++ b/docs/guide-es/helper-array.md @@ -5,7 +5,7 @@ Adicionalmente al [rico conjunto de funciones para arrays de PHP](http://php.net métodos estáticos adicionales permitiendo trabajar con arrays de manera más eficiente. -## Devolviendo Valores +## Devolviendo Valores Recuperar valores de un array, un objeto o una estructura compleja usando PHP estándar es bastante repetitivo. Tienes que comprobar primero si una clave existe con `isset`, después devolver el valor si existe, si no, @@ -64,7 +64,7 @@ Después de ejecutar el código el `$array` contendrá `['options' => [1, 2]]` y `getValue`, `remove` solo soporta nombres clave simples. -## Comprobando la Existencia de Claves +## Comprobando la Existencia de Claves `ArrayHelper::keyExists` funciona de la misma manera que [array_key_exists](http://php.net/manual/es/function.array-key-exists.php) excepto que también soporta case-insensitive para la comparación de claves. Por ejemplo, @@ -83,7 +83,7 @@ if (!ArrayHelper::keyExists('username', $data1, false) || !ArrayHelper::keyExist } ``` -## Recuperando Columnas +## Recuperando Columnas A menudo necesitas obtener unos valores de una columna de las filas de datos u objetos de un array. Un ejemplo común es obtener una lista de IDs. @@ -107,7 +107,7 @@ $result = ArrayHelper::getColumn($array, function ($element) { ``` -## Re-indexar Arrays +## Re-indexar Arrays Con el fin de indexar un array según una clave especificada, se puede usar el método `index`. La entrada del array debe ser multidimensional o un array de objetos. La clave puede ser un nombre clave del sub-array, un nombre de una propiedad del objeto, o @@ -134,7 +134,7 @@ $result = ArrayHelper::index($array, function ($element) { ``` -## Construyendo Mapas (Maps) +## Construyendo Mapas (Maps) Con el fin de construir un mapa (pareja clave-valor) de un array multidimensional o un array de objetos puedes usar el método `map`. Los parámetros `$from` y `$to` especifican los nombres de las claves o los nombres de las propiedades que serán configuradas en el mapa. Opcionalmente, se puede @@ -169,7 +169,7 @@ $result = ArrayHelper::map($array, 'id', 'name', 'class'); ``` -## Ordenamiento Multidimensional +## Ordenamiento Multidimensional El método `multisort` ayuda a ordenar un array de objetos o arrays anidados por una o varias claves. Por ejemplo, @@ -209,7 +209,7 @@ El último argumento es un PHP sort flag que toma los mismos valores que los pas PHP [sort()](http://php.net/manual/es/function.sort.php). -## Detectando Tipos de Array +## Detectando Tipos de Array Es muy útil saber si un array es indexado o asociativo. He aquí un ejemplo: @@ -224,7 +224,7 @@ echo ArrayHelper::isAssociative($associative); ``` -## Codificación y Decodificación de Valores HTML +## Codificación y Decodificación de Valores HTML Con el fin de codificar o decodificar caracteres especiales en un array de strings con entidades HTML puedes usar lo siguiente: @@ -237,7 +237,7 @@ Solo los valores se codifican por defecto. Pasando como segundo argumento `false La codificación utilizará el charset de la aplicación y podría ser cambiado pasandole un tercer argumento. -## Fusionando Arrays +## Fusionando Arrays ```php /** @@ -257,7 +257,7 @@ La codificación utilizará el charset de la aplicación y podría ser cambiado ``` -## Convirtiendo Objetos a Arrays +## Convirtiendo Objetos a Arrays A menudo necesitas convertir un objeto o un array de objetos a un array. El caso más común es convertir los modelos de active record con el fin de servir los arrays de datos vía API REST o utilizarlos de otra manera. El siguiente código diff --git a/docs/guide-es/helper-html.md b/docs/guide-es/helper-html.md index 7371096d3a4..e2cf2bbe013 100644 --- a/docs/guide-es/helper-html.md +++ b/docs/guide-es/helper-html.md @@ -10,14 +10,14 @@ que proporciona un conjunto de métodos estáticos para gestionar las etiquetas > Nota: Si el marcado es casi estático, es preferible usar HTML directamente. No es necesario encapsularlo todo con llamadas a la clase auxiliar Html. -## Lo fundamental +## Lo fundamental Teniendo en cuenta que la construcción de HTML dinámico mediante la concatenación de cadenas de texto se complica rápidamente, Yii proporciona un conjunto de métodos para manipular las opciones de etiquetas y la construcción de las mismas basadas en estas opciones. -### Generación de etiquetas +### Generación de etiquetas El código de generación de etiquetas es similar al siguiente: @@ -53,7 +53,7 @@ gestión adicional que se debe conocer: `'data' => ['params' => ['id' => 1, 'name' => 'yii'], 'status' => 'ok']` se convierte en `data-params='{"id":1,"name":"yii"}' data-status="ok"`. -### Formación de clases y estilos dinámicamente +### Formación de clases y estilos dinámicamente Cuando se construyen opciones para etiquetas HTML, a menudo nos encontramos con valores predeterminados que hay que modificar. Para añadir o eliminar clases CSS se puede usar el siguiente ejemplo: @@ -92,7 +92,7 @@ corresponde a nombres y valores de la propiedad CSS correspondiente o a una cade [[yii\helpers\Html::removeCssStyle()|removeCssStyle()]] acepta un array de propiedades que se eliminarán. Si sólo se eliminara una propiedad, se puede especificar como una cadena de texto. -## Codificación y Decodificación del contenido +## Codificación y Decodificación del contenido Para que el contenido se muestre correctamente y de forma segura con caracteres especiales HTML el contenido debe ser @@ -109,7 +109,7 @@ echo $userName; $decodedUserName = Html::decode($userName); ``` -## Formularios +## Formularios El trato con el marcado de formularios es una tarea repetitiva y propensa a errores. Por esto hay un grupo de métodos @@ -118,7 +118,7 @@ para ayudar a gestionarlos. > Nota: hay que considerar la opción de usar [[yii\widgets\ActiveForm|ActiveForm]] en caso de que se gestionen formularios que requieran validaciones. -### Creando formularios +### Creando formularios Se puede abrir un formulario con el método [[yii\helpers\Html::beginForm()|beginForm()]] como se muestra a continuación: @@ -139,7 +139,7 @@ El cierre de la etiqueta `form` es simple: ``` -### Botones +### Botones Para generar botones se puede usar el siguiente código: @@ -153,7 +153,7 @@ El primer argumento para los tres métodos es el título del botón y el segundo codificado pero si se usan datos recibidos por el usuario, deben codificarse mediante [[yii\helpers\Html::encode()|Html::encode()]]. -### Inputs +### Inputs Hay dos grupos en los métodos input. Unos empiezan con `active` y se llaman inputs activos y los otros no empiezan así. Los inputs activos obtienen datos del modelo y del atributo especificado y los datos de los inputs normales se @@ -217,7 +217,7 @@ Si no, se puede usar la lista de opciones (radio list): ``` -### Etiquetas y Errores +### Etiquetas y Errores De forma parecida que en los inputs hay dos métodos para generar etiquetas. El activo que obtiene los datos del modelo y el no-activo que acepta los datos directamente: @@ -239,7 +239,7 @@ Para mostrar un error individual: 'error']) ?> ``` -### Input Names y Values +### Input Names y Values Existen métodos para obtener names, IDs y values para los campos de entrada (inputs) basados en el modelo. Estos se usan principalmente internamente pero a veces pueden resultar prácticos: @@ -274,7 +274,7 @@ Para obtener el nombre de atributo sin sufijos o prefijos se puede usar el sigui echo Html::getAttributeName('dates[0]'); ``` -## Estilos y scripts +## Estilos y scripts Existen dos métodos para generar etiquetas que envuelvan estilos y scripts incrustados (embebbed): @@ -323,7 +323,7 @@ Es igual que con las CSS, el primer argumento especifica el enlace al fichero qu pueden pasar como segundo argumento. En las opciones se puede especificar `condition` del mismo modo que se puede usar para `cssFile`. -## Enlaces +## Enlaces Existe un método para generar hipervínculos a conveniencia: @@ -343,7 +343,7 @@ Si se requiere generar enlaces de tipo `mailto` se puede usar el siguiente códi ``` -## Imagenes +## Imagenes Para generar una etiqueta de tipo imagen se puede usar el siguiente ejemplo: @@ -359,7 +359,7 @@ genera Aparte de los [alias](concept-aliases.md) el primer argumento puede aceptar rutas, parámetros y URLs. Del mismo modo que [Url::to()](helper-url.md). -## Listas +## Listas Las listas desordenadas se puede generar como se muestra a continuación: diff --git a/docs/guide-es/helper-overview.md b/docs/guide-es/helper-overview.md index f4b4605d361..3bf4354d4c5 100644 --- a/docs/guide-es/helper-overview.md +++ b/docs/guide-es/helper-overview.md @@ -40,7 +40,7 @@ Las siguientes clases helper del núcleo son proporcionadas en los releases de Y - VarDumper -Personalizando Las Clases Helper +Personalizando Las Clases Helper -------------------------------- Para personalizar una clase helper del núcleo (ej. [[yii\helpers\ArrayHelper]]), deberías crear una nueva clase extendiendo diff --git a/docs/guide-es/rest-authentication.md b/docs/guide-es/rest-authentication.md index ce046ff270c..d97036e26f8 100644 --- a/docs/guide-es/rest-authentication.md +++ b/docs/guide-es/rest-authentication.md @@ -111,7 +111,7 @@ y entonces ejecutar la acción. La identidad del usuario autenticado puede ser r Si la autenticación falla, una respuesta con estado HTTP 401 será devuelta junto con otras cabeceras apropiadas (tal como la cabecera para autenticación básica HTTP `WWW-Authenticate`). -## Autorización +## Autorización Después de que un usuario se ha autenticado, probablementer querrás comprobar si él o ella tiene los permisos para realizar la acción solicitada. Este proceso es llamado *autorización (authorization)* y está cubierto en detalle en la [Sección de Autorización](security-authorization.md). diff --git a/docs/guide-es/rest-controllers.md b/docs/guide-es/rest-controllers.md index b16c9f80184..1177cdaf2d2 100644 --- a/docs/guide-es/rest-controllers.md +++ b/docs/guide-es/rest-controllers.md @@ -25,7 +25,7 @@ algunas de las cuales se describen en detalle en las siguientes secciones: * La autorización del usuario de acuerdo a la acción y recurso solicitado. -## Creando Clases de Controlador +## Creando Clases de Controlador Al crear una nueva clase de controlador, una convención para nombrar la clase del controlador es utilizar el nombre del tipo de recurso en singular. Por ejemplo, para servir información de usuario, @@ -45,7 +45,7 @@ public function actionView($id) ``` -## Filtros +## Filtros La mayoría de las características API REST son proporcionadas por [[yii\rest\Controller]] son implementadas en los términos de [filtros](structure-filters.md). En particular, los siguientes filtros se ejecutarán en el orden en que aparecen: @@ -76,14 +76,14 @@ public function behaviors() ``` -## Extendiendo `ActiveController` +## Extendiendo `ActiveController` Si tu clase controlador extiende de [[yii\rest\ActiveController]], debe establecer su propiedad [[yii\rest\ActiveController::modelClass||modelClass]] con el nombre de la clase del recurso que planeas servir a través de este controlador. La clase debe extender de [[yii\db\ActiveRecord]]. -### Personalizando Acciones +### Personalizando Acciones Por defecto, [[yii\rest\ActiveController]] provee de las siguientes acciones: @@ -120,7 +120,7 @@ public function prepareDataProvider() Por favor, consulta las referencias de clases de acciones individuales para aprender las opciones de configuración disponibles para cada una. -### Realizando Comprobación de Acceso +### 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/los recurso solicitado/s. Con [[yii\rest\ActiveController]], esto puede lograrse diff --git a/docs/guide-es/rest-error-handling.md b/docs/guide-es/rest-error-handling.md index a8b1dda1ff8..092a6ab20f6 100644 --- a/docs/guide-es/rest-error-handling.md +++ b/docs/guide-es/rest-error-handling.md @@ -40,7 +40,7 @@ La siguiente lista sumariza los códigos de estado HTTP que son usados por el fr * `500`: Error interno del servidor. Esto puede estar causado por errores internos del programa. -## Personalizando la Respuesta al Error +## Personalizando la Respuesta al Error A veces puedes querer personalizar el formato de la respuesta del error por defecto . Por ejemplo, en lugar de depender del uso de diferentes estados HTTP para indicar los diferentes errores, puedes querer usar siempre el estado HTTP 200 diff --git a/docs/guide-es/rest-quick-start.md b/docs/guide-es/rest-quick-start.md index c4f385c89d1..836292f9de4 100644 --- a/docs/guide-es/rest-quick-start.md +++ b/docs/guide-es/rest-quick-start.md @@ -23,7 +23,7 @@ Supongamos que deseas exponer los datos de los usuarios vía APIs RESTful. Los d y ya tienes creado la clase [[yii\db\ActiveRecord|ActiveRecord]] `app\models\User` para acceder a los datos del usuario. -## Creando un controlador +## Creando un controlador Primero, crea una clase controladora `app\controllers\UserController` como la siguiente, @@ -42,7 +42,7 @@ La clase controladora extiende de [[yii\rest\ActiveController]]. Especificado po como `app\models\User`, el controlador sabe que modelo puede ser usado para recoger y manipular sus datos. -## Configurando las reglas de las URL +## Configurando las reglas de las URL A continuación, modifica la configuración del componente `urlManager` en la configuración de tu aplicación: @@ -61,7 +61,7 @@ La configuración anterior principalmente añade una regla URL para el controlad que los datos de user pueden ser accedidos y manipulados con URLs amigables y verbos HTTP significativos. -## Habilitando entradas JSON +## Habilitando entradas JSON Para permitir que la API acepte datos de entrada con formato JSON, configura la propiedad [[yii\web\Request::$parsers|parsers]] del componente de aplicación `request` para usar [[yii\web\JsonParser]] para entradas JSON: @@ -78,7 +78,7 @@ del componente de aplicación `request` para usar [[yii\web\JsonParser]] para en `application/x-www-form-urlencoded` y `multipart/form-data` como formatos de entrada. -## Probándolo +## Probándolo Con la mínima cantidad de esfuerzo, tienes ya finalizado tu tarea de crear las APIs RESTful para acceder a los datos de user. Las APIs que tienes creado incluyen: @@ -188,7 +188,7 @@ Por ejemplo, la URL `http://localhost/users?fields=id,email` sólo devolverá lo > Puedes y deberías filtrar estos campos como se describe en la sección [Response Formatting](rest-response-formatting.md). -## Resumen +## Resumen Utilizando el framework Yii API RESTful, implementa un punto final API en términos de una acción de un controlador, y utiliza un controlador para organizar las acciones que implementan los puntos finales para un sólo tipo de recurso. diff --git a/docs/guide-es/rest-resources.md b/docs/guide-es/rest-resources.md index a0785ce7da2..066a1b213fe 100644 --- a/docs/guide-es/rest-resources.md +++ b/docs/guide-es/rest-resources.md @@ -12,7 +12,7 @@ Mientras que no hay restricción a cómo representar un recurso, en YII usualmen En esta sección, vamos principalmente a describir como la clase con recursos que extiende de [[yii\base\Model]] (o sus clases hijas) puede especificar qué datos puede ser devueltos vía las APIs RESTful. Si la clase de los recursos no extiende de [[yii\base\Model]], entonces todas las variables públicas miembro serán devueltas. -## Campos (fields) +## Campos (fields) Cuando incluimos un recurso en una respuesta de la API RESTful, el recurso necesita ser serializado en una cadena. Yii divide este proceso en dos pasos. Primero, el recurso es convertido en un array por [[yii\rest\Serializer]]. @@ -37,7 +37,7 @@ http://localhost/users?fields=id,email&expand=profile ``` -### Sobreescribiendo `fields()` +### Sobreescribiendo `fields()` Por defecto, [[yii\base\Model::fields()]] devuelve todos los atributos de los modelos como si fueran campos, mientras [[yii\db\ActiveRecord::fields()]] sólo devuelve los atributos que tengan datos en la base de datos. @@ -79,7 +79,7 @@ public function fields() > quitar `auth_key`, `password_hash` y `password_reset_token`. -### Sobreescribiendo `extraFields()` +### Sobreescribiendo `extraFields()` Por defecto, [[yii\base\Model::extraFields()]] no devuelve nada, mientras que [[yii\db\ActiveRecord::extraFields()]] devuelve los nombres de las relaciones que tienen datos (populated) obtenidos de la base de datos. @@ -114,7 +114,7 @@ la petición `http://localhost/users?fields=id,email&expand=profile` puede devol ``` -## Enlaces (Links) +## Enlaces (Links) [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS), es una abreviación de Hipermedia es el Motor del Estado de la Aplicación (Hypermedia as the Engine of Application State), promueve que las APIs RESTfull devuelvan información que permita a los clientes descubrir las acciones que soportan los recursos devueltos. El sentido de HATEOAS es devolver un conjunto de hiperenlaces con relación a la información, cuando los datos de los recursos son servidos por las APIs. @@ -152,7 +152,7 @@ Cuando un objeto `User` es devuelto en una respuesta, puede contener un elemento ``` -## Colecciones +## Colecciones Los objetos de los recursos pueden ser agrupados en *collections*. Cada colección contiene una lista de recursos objeto del mismo tipo. diff --git a/docs/guide-es/rest-response-formatting.md b/docs/guide-es/rest-response-formatting.md index f60db3616ff..4eff61f1527 100644 --- a/docs/guide-es/rest-response-formatting.md +++ b/docs/guide-es/rest-response-formatting.md @@ -13,7 +13,7 @@ con el formato de la respuesta: componente de la aplicación [[yii\web\Response::formatters|response]]. -## Negociación de contenido (Content Negotiation) +## Negociación de contenido (Content Negotiation) Yii soporta la negociación de contenido a través del filtro [[yii\filters\ContentNegotiator]]. La clase de controlador base del API RESTful [[yii\rest\Controller]] está equipada con este filtro bajo el nombre `contentNegotiator`. @@ -81,7 +81,7 @@ Las claves de la propiedad `formats` son los tipos MIME soportados, mientras que los cuales deben ser soportados en [[yii\web\Response::formatters]]. -## Serialización de Datos +## Serialización de Datos Como hemos descrito antes, [[yii\rest\Serializer]] es la pieza central responsable de convertir objetos recurso o colecciones en arrays. Reconoce objetos tanto implementando [[yii\base\ArrayableInterface]] diff --git a/docs/guide-es/runtime-handling-errors.md b/docs/guide-es/runtime-handling-errors.md index 7e8d8ca4eda..e7cfb159264 100644 --- a/docs/guide-es/runtime-handling-errors.md +++ b/docs/guide-es/runtime-handling-errors.md @@ -15,7 +15,7 @@ El [[yii\web\ErrorHandler|error handler]] esta habilitado de forma predeterminad constante `YII_ENABLE_ERROR_HANDLER` con valor false en el [script de entrada (entry script)](structure-entry-scripts.md) de la aplicación. -## Uso del Gestor de Errores +## Uso del Gestor de Errores El [[yii\web\ErrorHandler|error handler]] se registra como un [componente de aplicación](structure-application-components.md) llamado `errorHandler`. Se puede configurar en la @@ -61,7 +61,7 @@ use yii\web\NotFoundHttpException; throw new NotFoundHttpException(); ``` -## Personalizar la Visualización de Errores +## Personalizar la Visualización de Errores El [[yii\web\ErrorHandler|error handler]] ajusta la visualización del error conforme al valor de la constante `YII_DEBUG`. Cuando `YII_DEBUG` es `true` (es decir, en modo depuración (debug)), el gestor de errores mostrara las @@ -85,7 +85,7 @@ Se pueden configurar las propiedades [[yii\web\ErrorHandler::errorView|errorView [[yii\web\ErrorHandler::exceptionView|exceptionView]] el gestor de errores para usar nuestros propias vistas para personalizar la visualización de los errores. -### Uso de Acciones de Error +### Uso de Acciones de Error Una mejor manera de personalizar la visualización de errores es usar un [acción](structure-controllers.md) de error dedicada. Para hacerlo, primero se debe configurar la propiedad [[yii\web\ErrorHandler::errorAction|errorAction]] del @@ -153,7 +153,7 @@ a las siguientes variables si se define el error como un [[yii\web\ErrorAction]] > Información: Tanto la [plantilla de aplicación básica](start-installation.md) como la [plantilla de aplicación avanzada](tutorial-advanced-app.md), ya incorporan la acción de error y la vista de error. -### Personalizar el Formato de Respuesta de Error +### Personalizar el Formato de Respuesta de Error El gestor de errores muestra los errores de siguiente la configuración del formato de las [respuestas](runtime-responses.md). Si el [[yii\web\Response::format response format]] es `html`, se usará la vista de diff --git a/docs/guide-es/runtime-logging.md b/docs/guide-es/runtime-logging.md index 3d148f79721..505caf01aa6 100644 --- a/docs/guide-es/runtime-logging.md +++ b/docs/guide-es/runtime-logging.md @@ -16,7 +16,7 @@ Usar el framework de registro de anotaciones de Yii involucra los siguientes pas En esta sección, se describirán principalmente los dos primeros pasos. -## Anotación de Messages +## Anotación de Messages Registrar mensajes de anotación es tan simple como llamar a uno de los siguientes métodos de registro de anotaciones. @@ -60,7 +60,7 @@ linea anterior de código se llamara dentro de este método. finalizado, el objeto de registro llamará [[yii\log\Dispatcher|message dispatcher]] para enviar los mensajes de registro registrados a los [destiinos de registros](#log-targets). -## Destino de Registros +## Destino de Registros Un destino de registro es una instancia de la clase [[yii\log\Target]] o de una clase hija. Este filtra los mensajes de registro por sus niveles de severidad y sus categorías y después los exporta a algún medio. Por ejemplo, @@ -120,7 +120,7 @@ información de configuración y uso. A continuación, se describirá las características más comunes de todos los destinos de registros. -### Filtrado de Mensajes +### Filtrado de Mensajes Se pueden configurar las propiedades [[yii\log\Target::levels|levels]] y [[yii\log\Target::categories|categories]] para cada destino de registros, con estas se especifican los niveles de severidad y las categorías de mensajes que @@ -176,7 +176,7 @@ de advertencia de las categorías que coincidan con alguno de los siguientes pat ejemplo, la excepción [[yii\web\NotFoundHttpException]] causará un mensaje de error del tipo `yii\web\HttpException:404`. -### Formato de los Mensajes +### Formato de los Mensajes Los destinos exportan los mensajes de registro filtrados en cierto formato. Por ejemplo, is se instala un destino de registros de la calse [[yii\log\FileTarget]], encontraremos un registro similar en el archivo de @@ -227,7 +227,7 @@ Se puede configurar `logVars` para que sea un array vacío para deshabilitar tot contexto. O si se desea implementar un método propio de proporcionar información de contexto se puede sobrescribir el método [[yii\log\Target::getContextMessage()]]. -### Nivel de Seguimiento de Mensajes +### Nivel de Seguimiento de Mensajes Durante el desarrollo, a veces se quiere visualizar de donde proviene cada mensaje de registro. Se puede lograr configurando la propiedad [[yii\log\Dispatcher::traceLevel|traceLevel]] del componente `log` como en el siguiente @@ -253,7 +253,7 @@ si `YII_DEBUG` está deshabilitado, no se incluirá información de la pila de l > Información: Obtener información de la pila de llamadas no es trivial. Por lo tanto, sólo se debe usar esta característica durante el desarrollo o cuando se depura la aplicación. -### Liberación (Flushing) y Exportación de Mensajes +### Liberación (Flushing) y Exportación de Mensajes Como se ha comentado anteriormente, los mensajes de registro se mantienen en un array por el [[yii\log\Logger|logger object]]. Para limitar el consumo de memoria de este array, el componente encargado del @@ -315,7 +315,7 @@ return [ > Nota: El uso frecuente de liberación y exportación puede degradar el rendimiento de la aplicación. -### Conmutación de Destinos de Registros +### Conmutación de Destinos de Registros Se puede habilitar o deshabilitar un destino de registro configuración su propiedad [[yii\log\Target::enabled|enabled]]. Esto se puede llevar a cabo a mediante la configuración del destino de @@ -346,14 +346,14 @@ return [ ]; ``` -### Creación de Nuevos Destinos +### Creación de Nuevos Destinos La creación de nuevas clases de destinos de registro es muy simple. Se necesita implementar el método [[yii\log\Target::export()]] enviando el contenido del array [[yii\log\Target::messages]] al medio designado. Se puede llamar al método [[yii\log\Target::formatMessage()]] para formatear los mensajes. Se pueden encontrar más detalles de destinos de registros en las clases incluidas en la distribución de Yii. -## Perfilado de Rendimiento +## Perfilado de Rendimiento El Perfilado de rendimiento es un tipo especial de registro de mensajes que se usa para medir el tiempo que tardan en ejecutarse ciertos bloques de código y encontrar donde están los cuellos de botella de rendimiento. Por ejemplo, la diff --git a/docs/guide-es/runtime-requests.md b/docs/guide-es/runtime-requests.md index a1617f899cc..3179577344a 100644 --- a/docs/guide-es/runtime-requests.md +++ b/docs/guide-es/runtime-requests.md @@ -7,7 +7,7 @@ objeto request correspondiente a través del [componente de aplicación](structu que, por defecto, es una instancia de [[yii\web\Request]]. En esta sección se describirá como hacer uso de este componente en las aplicaciones. -## Parámetros de Request +## Parámetros de Request Para obtener los parámetros de la petición, se puede llamar a los métodos [[yii\web\Request::get()|get()]] y [[yii\web\Request::post()|post()]] del componente `request`. Estos devuelven los valores de `$_GET` y `$_POST`, @@ -58,7 +58,7 @@ $param = $request->getBodyParam('id'); se acceda a él a través de los métodos descritos anteriormente. Se puede personalizar la manera en como los parámetros se convierten configurando la propiedad [[yii\web\Request::parsers]]. -## Métodos de Request +## Métodos de Request Se puede obtener el método HTTP usado por la petición actual a través de la expresión `Yii::$app->request->method`. Se proporcionan un conjunto de propiedades booleanas para comprobar si el método actual es de un cierto tipo. Por ejemplo: @@ -72,7 +72,7 @@ if ($request->isPost) { // el método de la request es POST } if ($request->isPut) { // el método de la request es PUT } ``` -## URLs de Request +## URLs de Request El componente `request` proporciona muchas maneras de inspeccionar la URL solicitada actualmente. @@ -95,7 +95,7 @@ varias partes de la URL explicadas en los siguientes puntos: * [[yii\web\Request::serverName|serverName]]: devuelve `example.com`, que es el nombre del host dentro de la URL. * [[yii\web\Request::serverPort|serverPort]]: devuelve 80, que es el puerto que usa el servidor web. -## Cabeceras HTTP +## Cabeceras HTTP Se pueden obtener la información de las cabeceras HTTP a través de [[yii\web\HeaderCollection|header collection]] devueltas por la propiedad [[yii\web\Request::headers]]. Por ejemplo: @@ -130,7 +130,7 @@ lista de idiomas soportados por la aplicación, comparados con diatónicamente el content type y el idioma que debe usarse en la respuesta. El filtro implementa la negociación de contenido en la parte superior de las propiedades y métodos descritos anteriormente. -## Información del cliente +## Información del cliente Se puede obtener el nombre del host y la dirección IP de la máquina cliente a través de [[yii\web\Request::userHost|userHost]] y [[yii\web\Request::userIP|userIP]], respectivamente. Por ejemplo: diff --git a/docs/guide-es/runtime-responses.md b/docs/guide-es/runtime-responses.md index c765d0974c1..8b16966c729 100644 --- a/docs/guide-es/runtime-responses.md +++ b/docs/guide-es/runtime-responses.md @@ -13,7 +13,7 @@ usuario final tal y como se explica a continuación. En esta sección, se describirá como generar y enviar respuestas a usuarios finales. -## Códigos de Estado +## Códigos de Estado Una de las primeras cosas que debería hacerse cuando se genera una respuesta es indicar si la petición se ha gestionado correctamente. Esto se indica asignando la propiedad [[yii\web\Response::statusCode]] a la que se le puede @@ -56,7 +56,7 @@ Si la excepción que se quiere lanzar no se encuentra en la lista anterior, se p throw new \yii\web\HttpException(402); ``` -## Cabeceras HTTP +## Cabeceras HTTP Se puede enviar cabeceras HTTP modificando el [[yii\web\Response::headers|header collection]] en el componente `response`. Por ejemplo: @@ -78,7 +78,7 @@ $values = $headers->remove('Pragma'); Además, las nuevas cabeceras registradas no se enviarán al usuario hasta que se llame al método [[yii\web\Response::send()]]. -## Cuerpo de la Respuesta +## Cuerpo de la Respuesta La mayoría de las respuestas deben tener un cuerpo que contenga el contenido que se quiere mostrar a los usuarios finales. @@ -160,7 +160,7 @@ public function actionInfo() `response` en la configuración de la aplicación. Sin embargo, se puede usar la [inyección de dependencias](concept-di-container.md) para aplicar la configuración común al nuevo objeto response. -## Redirección del Navegador +## Redirección del Navegador La redirección del navegador se basa en el envío de la cabecera HTTP `Location`. Debido a que esta característica se usa comúnmente, Yii proporciona soporte especial para ello. @@ -202,7 +202,7 @@ JavaScript, incluyendo la redirección de navegador basada en la cabecera `X-Red fichero JavaScript (registrándolo *asset bundle* [[yii\web\YiiAsset]]), no se necesitará escribir nada más para tener soporte en redirecciones AJAX. -## Enviar Archivos +## Enviar Archivos Igual que con la redirección, el envío de archivos es otra característica que se basa en cabeceras HTTP especificas. Yii proporciona un conjunto de métodos para dar soporte a varias necesidades del envío de ficheros. Todos ellos @@ -242,7 +242,7 @@ algunos servidores Web populares. - Nginx: [X-Accel-Redirect](http://wiki.nginx.org/XSendfile) - Cherokee: [X-Sendfile and X-Accel-Redirect](http://www.cherokee-project.com/doc/other_goodies.html#x-sendfile) -## Enviar la Respuesta +## Enviar la Respuesta El contenido en una respuesta no se envía al usuario hasta que se llama al método [[yii\web\Response::send()]]. De forma predeterminada, se llama a este método automáticamente al final de [[yii\base\Application::run()]]. Sin embargo, diff --git a/docs/guide-es/runtime-routing.md b/docs/guide-es/runtime-routing.md index 8525c113466..f15a943d481 100644 --- a/docs/guide-es/runtime-routing.md +++ b/docs/guide-es/runtime-routing.md @@ -37,7 +37,7 @@ los parámetros. ``` -## Formatos de URL +## Formatos de URL El [[yii\web\UrlManager|URL manager]] soporta dos formatos de URL: el formato predeterminado de URL y el formato URL amigable (pretty URL). @@ -59,7 +59,7 @@ Se puede cambiar entre los dos formatos de URL conmutando la propiedad [[yii\web\UrlManager::enablePrettyUrl|enablePrettyUrl]] del [[yii\web\UrlManager|URL manager]] sin cambiar ningún otro código de aplicación. -## Enrutamiento +## Enrutamiento El Enrutamiento involucra dos pasos. El primero, la petición (request) entrante se convierte en una ruta y sus parámetros de consulta asociados. En el segundo paso, se crea la correspondiente @@ -92,7 +92,7 @@ acción. Empezando por la primera parte de la ruta, la aplicación, sigue los si Si ocurre algún error entre alguno de los pasos anteriores, se lanzará una excepción de tipo [[yii\web\NotFoundHttpException]], indicando el fallo de proceso de enrutamiento. -### Ruta Predeterminada +### Ruta Predeterminada Cuando una petición se convierte en una ruta vacía, se usa la llamada *ruta predeterminada*. Por defecto, la ruta predeterminada es `site/index`, que hace referencia a la acción `index` del controlador `site`. Se puede personalizar @@ -107,7 +107,7 @@ aplicación como en el siguiente ejemplo: ``` -### Ruta `catchAll` +### Ruta `catchAll` A veces, se puede querer poner la aplicación Web en modo de mantenimiento temporalmente y mostrar la misma pagina de información para todas las peticiones. Hay varias maneras de lograr este objetivo. Pero una de las maneras más simples @@ -126,7 +126,7 @@ Con la anterior configuración, se usar la acción `site/offline` para gestionar La propiedad `catchAll` debe tener un array cuyo primer elemento especifique una ruta, y el resto de elementos (pares nombre-valor) especifiquen los parámetros [ligados a la acción](structure-controllers.md#action-parameters). -## Creación de URLs +## Creación de URLs Yii proporciona un método auxiliar (helper method) [[yii\helpers\Url::to()]] para crear varios tipos de URLs a partir de las rutas dadas y sus parámetros de consulta asociados. Por ejemplo, @@ -222,7 +222,7 @@ echo Url::previous(); ``` -## Uso de URLs Amigables +## Uso de URLs Amigables Para utilizar URLs amigables, hay que configurar el componente `ulrManager` en la configuración de la aplicación como en el siguiente ejemplo: @@ -265,7 +265,7 @@ amigable. El resto de propiedades son opcionales. Sin embargo, la anterior confi [Instalación](start-installation.md#recommended-apache-configuration). -### Regalas de URL +### Regalas de URL Una regla de URL es una instancia de [[yii\web\UrlRule]] o de una clase hija. Cada URL consiste en un patrón utilizado para cotejar la parte de información de ruta de las URLs, una ruta, y algunos parámetros de consulta. Una URL puede @@ -317,7 +317,7 @@ De forma predeterminada si no se especifica la opción `class` en la configuraci predeterminada [[yii\web\UrlRule]]. -### Parameters Asociativos +### Parameters Asociativos Una regla de URL puede asociarse a una determinado grupo de parámetros de consulta que se hayan sido especificados en el patrón con el formato ``, donde `ParamName` especifica el nombre del parámetro y `RegExp` es una @@ -369,7 +369,7 @@ Y cuando las se usen las reglas para crear URLs: la parte de información de la ruta y todos los parámetros como parte de la consulta. -### Parametrización de Rutas +### Parametrización de Rutas Se pueden incrustar nombres de parámetros en la ruta de una regla de URL. Esto permite a la regla de URL poder ser usada para que coincida con varias rutas. Por ejemplo, la siguiente regla incrusta los parámetros `controller` y @@ -423,7 +423,7 @@ La regla anterior puede usarse para convertir o crear cualquiera de las siguient Sin usar ningún parámetro opcional, se tendrían que crear 4 reglas para lograr el mismo resultado. -### Reglas con Nombres de Servidor +### Reglas con Nombres de Servidor Es posible incluir nombres de servidores Web en los parámetros de las URLs. Esto es practico principalmente cuando una aplicación debe tener distintos comportamientos paro diferentes nombres de servidores Web. Por ejemplo, las siguientes @@ -453,7 +453,7 @@ ejemplo, la siguiente regla convertirá la URL `http://en.example.com/posts` en permitirá que la aplicación se pueda desarrollar en cualquier directorio sin la necesidad de cambiar el código de la aplicación. -### Sufijos de URL +### Sufijos de URL Se puede querer añadir sufijos a las URLs para varios propósitos. Por ejemplo, se puede añadir `.html`a las URLs para que parezcan URLs para paginas HTML estáticas; también se puede querer añadir `.json` a las URLs para indicar el tipo @@ -512,7 +512,7 @@ siguiente configuración contiene una regla de URL personalizada que usa el sufi ``` -### Métodos HTTP +### Métodos HTTP Cuando se implementan APIs RESTful, normalmente se necesita que ciertas URLs se conviertan en otras de acuerdo con el método HTTP que se esté usando. Esto se puede hacer fácilmente prefijando los métodos HTTP soportados como los @@ -538,7 +538,7 @@ convertirá en `post/view`. el desarrollo de APIs RESTful. -### Personalización de Reglas +### Personalización de Reglas En los anteriores ejemplos, las reglas de URL se han declarado principalmente en términos de pares de patrón-ruta. Este es un método de acceso directo que se usa a menudo. En algunos escenarios, se puede querer personalizar la regla @@ -562,7 +562,7 @@ array completo de configuración para especificar una regla. El siguiente ejempl usará la clase predeterminada [[yii\web\UrlRule]]. -### Adición de Reglas Dinámicamente +### Adición de Reglas Dinámicamente Las reglas de URL se pueden añadir dinámicamente en el [[yii\web\UrlManager|URL manager]]. A menudo se necesita por [módulos](structure-modules.md) redistribubles que se encargan de gestionar sus propias reglas de URL. Para que las @@ -583,7 +583,7 @@ public function bootstrap($app) Hay que tener en cuenta se deben añadir estos módulos en [[yii\web\Application::bootstrap]] para que puedan participar en el proceso de [bootstrapping](runtime-bootstrapping.md) -### Creación de Clases de Reglas +### Creación de Clases de Reglas A pesar del hecho de que de forma predeterminada la clase [[yii\web\UrlRule]] lo suficientemente flexible para la mayoría de proyectos, hay situaciones en las que se tiene que crear una clase de reglas propia. Por ejemplo, en un @@ -642,7 +642,7 @@ Y usa la nueva clase de regla en la configuración de [[yii\web\UrlManager::rule ] ``` -## Consideración del Rendimiento +## Consideración del Rendimiento Cuando se desarrolla una aplicación Web compleja, es importante optimizar las reglas de URL para que tarden el mínimo tiempo posible en convertir las peticiones y crear URLs. diff --git a/docs/guide-es/runtime-sessions-cookies.md b/docs/guide-es/runtime-sessions-cookies.md index 4a7537d5201..400801b973f 100644 --- a/docs/guide-es/runtime-sessions-cookies.md +++ b/docs/guide-es/runtime-sessions-cookies.md @@ -4,12 +4,12 @@ Sesiones (Sessions) y Cookies Las sesiones y las cookies permiten la persistencia de datos a través de múltiples peticiones de usuario. En PHP plano, debes acceder a ellos a través de las variables globales `$_SESSION` y `$_COOKIE`, respectivamente. Yii encapsula las sesiones y las cookies como objetos y por lo tanto te permite acceder a ellos de manera orientada a objetos con estupendas mejoras adicionales. -## Sesiones +## Sesiones Como las [peticiones](runtime-requests.md) y las [respuestas](runtime-responses.md), puedes acceder a las sesiones vía el [componente de la aplicación](structure-application-components.md) `session` el cual es una instancia de [[yii\web\Session]], por defecto. -### Abriendo y cerrando sesiones +### Abriendo y cerrando sesiones Para abrir y cerrar una sesión, puedes hacer lo siguiente: @@ -32,7 +32,7 @@ $session->destroy(); Puedes llamar a [[yii\web\Session::open()|open()]] y [[yii\web\Session::close()|close()]] múltiples veces sin causar errores. Esto ocurre porque internamente los métodos verificarán primero si la sesión está ya abierta. -### Accediendo a los datos de sesión +### Accediendo a los datos de sesión Para acceder a los datos almacenados en sesión, puedes hacer lo siguiente: @@ -114,7 +114,7 @@ $session['captcha.lifetime'] = 3600; Para un mejor rendimiento y legibilidad del código, recomendamos la última solución. Es decir, en vez de almacenar un array como una única variable de sesión, almacena cada elemento del array como una variable de sesión que comparta el mismo prefijo clave con otros elementos del array. -### Personalizar el almacenamiento de sesión +### Personalizar el almacenamiento de sesión Por defecto la clase [[yii\web\Session]] almacena los datos de sesión como ficheros en el servidor. Yii también provee de las siguientes clases de sesión que implementan diferentes almacenamientos de sesión: @@ -161,7 +161,7 @@ donde 'BLOB' se refiere al BLOB-type de tu DBMS preferida. Abajo está el tipo B > Nota: De acuerdo con la configuración de php.ini `session.hash_function`, puedes necesitar ajustar el tamaño de la columna `id`. Por ejemplo, si `session.hash_function=sha256`, deberías usar el tamaño 64 en vez de 40. -### Flash Data +### Flash Data Flash data es una clase especial de datos de sesión que, una vez se inicialice en la primera petición, estará sólo disponible durante la siguiente petición y automáticamente se borrará después. Flash data es comúnmente usado para implementar mensajes que deberían ser mostrados una vez a usuarios finales, tal como mostrar un mensaje de confirmación después de que un usuario envíe un formulario con éxito. @@ -207,13 +207,13 @@ $alerts = $session->getFlash('alerts'); del mismo nombre. Esto ocurre porque el último método elimina el flash data dentro del array así que puedes añadir un nuevo flash data con el mismo nombre. Como resultado, cuando llamas a [[yii\web\Session::getFlash()]], puedes encontrarte algunas veces que te está devolviendo un array mientras que otras veces te está devolviendo un string, esto depende del orden que invoques a estos dos métodos. -## Cookies +## Cookies Yii representa cada cookie como un objeto de [[yii\web\Cookie]]. Tanto [[yii\web\Request]] como [[yii\web\Response]] mantienen una colección de cookies vía la propiedad de llamada `cookies`. La colección de cookie en la antigua representación son enviadas en una petición, mientras la colección de cookie en esta última representa las cookies que van a ser enviadas al usuario. -### Leyendo Cookies +### Leyendo Cookies Puedes recuperar las cookies en la petición actual usando el siguiente código: @@ -240,7 +240,7 @@ if (isset($cookies['language'])) ... ``` -### Enviando Cookies +### Enviando Cookies Puedes enviar cookies a usuarios finales usando el siguiente código: @@ -265,7 +265,7 @@ Además de [[yii\web\Cookie::name|name]], [[yii\web\Cookie::value|value]] las pr > Nota: Para mayor seguridad, el valor por defecto de [[yii\web\Cookie::httpOnly]] es true. Esto ayuda a mitigar el riesgo del acceso a la cookie protegida por script desde el lado del cliente (si el navegador lo soporta). Puedes leer el [httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) para más detalles. -### Validación de la Cookie +### Validación de la Cookie Cuando estás leyendo y enviando cookies a través de los componentes `request` y `response` como mostramos en las dos últimas subsecciones, cuentas con el añadido de seguridad de la validación de cookies el cual protege las cookies de ser modificadas en el lado del cliente. Esto se consigue con la firma de cada cookie con una cadena hash, el cual permite a la aplicación saber si una cookie ha sido modificada en el lado del cliente o no. Si es así, la cookie no será accesible a través de [[yii\web\Request::cookies|cookie collection]] del componente `request`. diff --git a/docs/guide-es/start-databases.md b/docs/guide-es/start-databases.md index a9f6a28c9e0..fb9f4962863 100644 --- a/docs/guide-es/start-databases.md +++ b/docs/guide-es/start-databases.md @@ -18,7 +18,7 @@ En particular, deberás ser capaz de crear una base de datos y saber ejecutar co base de datos. -Preparando una Base de Datos +Preparando una Base de Datos ---------------------------- Para empezar, crea una base de datos llamada `yii2basic` de la cual tomarás los datos en la aplicación. @@ -50,7 +50,7 @@ Al final, tendrás una base de datos llamada `yii2basic`, y dentro de esta, una registros en ella. -Configurando una conexión a la Base de Datos +Configurando una conexión a la Base de Datos -------------------------------------------- Asegúrate de tener instalado la extensión de PHP [PDO](http://www.php.net/manual/es/book.pdo.php) y el driver @@ -83,7 +83,7 @@ La conexión a la base de datos realizada anteriormente puede ser accedida media Para más información, consulta la sección [Configuraciones](concept-configurations.md). -Creando un Active Record +Creando un Active Record ------------------------ Para representar y extraer datos de la tabla `country`, crea una clase [Active Record](db-active-record.md) @@ -131,7 +131,7 @@ Puedes encontrar información más detallada acerca de [Active Record](db-active puedes utilizar un método de acceso de bajo nivel llamado [Data Access Objects](db-dao.md). -Creando una Acción +Creando una Acción ------------------ Para mostrar el país a los usuarios, necesitas crear una acción. En vez de hacerlo en el controlador `site` @@ -188,7 +188,7 @@ Al final, la acción `index` renderiza una vista llamada `index` y le pasa los d de paginación relacionada. -Creando una Vista +Creando una Vista ----------------- Bajo el directorio `views`, crea primero un sub-directorio llamado `country`. Este será usado para contener @@ -220,7 +220,7 @@ El widget `LinkPager` muestra una lista de botones que representan las páginas de ellas mostrará los datos de países de la página correspondiente. -Probándolo +Probándolo ---------- Para ver cómo funciona, utiliza a la siguiente URL en tu navegador: @@ -252,7 +252,7 @@ Entre bastidores, [[yii\data\Pagination|Pagination]] está realizando su magia. siguientes cinco países para mostrar. -Resumen +Resumen ------- En esta sección has aprendido cómo trabajar con una base de datos. También has aprendido cómo traer y mostrar diff --git a/docs/guide-es/start-forms.md b/docs/guide-es/start-forms.md index 6788fc45917..2516677d3f7 100644 --- a/docs/guide-es/start-forms.md +++ b/docs/guide-es/start-forms.md @@ -15,7 +15,7 @@ A través de este tutorial, aprenderás * Cómo construir un formulario HTML en una [vista](structure-views.md). -Creando un Modelo +Creando un Modelo ----------------- Para representar los datos ingresados por un usuario, crea una clase modelo `EntryForm` cómo se muestra abajo y @@ -60,7 +60,7 @@ de los datos se mostrará en la propiedad [[yii\base\Model::hasErrors|hasErrors] [[yii\base\Model::getErrors|errors]] puedes aprender cuales son los errores de validación que tiene el modelo. -Creando una Acción +Creando una Acción ------------------ Luego, crea una acción `entry` en el controlador `site`, como lo hiciste en la sección anterior. @@ -112,7 +112,7 @@ mostrada, y mostrará el formulario HTML junto con los mensajes de error de vali En el código de arriba, el componente `request` es utilizado para acceder los datos `$_POST`. -Creando Vistas +Creando Vistas -------------- Finalmente, crea dos vistas llamadas `entry-confirm` y `entry` que sean mostradas por la acción `entry`, @@ -160,7 +160,7 @@ y el segundo del dato "email". Después de los campos de input, el método [[yii es llamado para general el botón de submit (enviar). -Probándolo +Probándolo ---------- Para ver cómo funciona, utiliza tu navegador para ir al siguiente URL: @@ -182,7 +182,7 @@ mostrando los datos que acabas de ingresar. -### Magia Explicada +### Magia Explicada Te estarás preguntando cómo funciona toda esa automatización del formulario HTML, porque parece casi mágico que pueda mostrar una etiqueta para cada campo de input y mostrar los mensajes de error si no ingresas los datos correctamente @@ -208,7 +208,7 @@ el siguiente código: código de tus vistas en widgets reutilizables para simplificar el desarrollo de las vistas en un futuro. -Resumen +Resumen ------- En esta sección, has tocado cada parte del patrón de diseño MVC. Ahora has aprendido diff --git a/docs/guide-es/start-gii.md b/docs/guide-es/start-gii.md index 4a67d8e59a1..709acc079c3 100644 --- a/docs/guide-es/start-gii.md +++ b/docs/guide-es/start-gii.md @@ -13,7 +13,7 @@ A lo largo de este tutorial, aprenderás * Cómo personalizar el código generado por Gii. -Comenzando con Gii +Comenzando con Gii ------------------ [Gii](tool-gii.md) está provisto por Yii en forma de [módulo](structure-modules.md). Puedes habilitar Gii @@ -47,7 +47,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -Generando una Clase Active Record +Generando una Clase Active Record --------------------------------- Para poder generar una clase Active Record con Gii, selecciona "Model Generator" (haciendo click en el vínculo que existe en la página inicial del modulo Gii). Después, completa el formulario de la siguiente manera, @@ -71,7 +71,7 @@ Después, verás una página de confirmación indicando que el código ha sido g ha sido sobrescrito con el nuevo código generado. -Generando código de ABM (CRUD en inglés) +Generando código de ABM (CRUD en inglés) ---------------------------------------- En computación, CRUD es el acrónimo de Crear, Obtener, Actualizar y Borrar (del inglés: Create, Read, Update y Delete) @@ -90,7 +90,7 @@ Si has creado previamente los archivos `controllers/CountryController.php` y `views/country/index.php` (en la sección sobre bases de datos de esta guía), asegúrate de seleccionar el checkbox "overwrite" para reemplazarlos. (Las versiones anteriores no disponían de un soporte ABM (CRUD) completo.) -Probándolo +Probándolo ---------- Para ver cómo funciona, accede desde tu navegador a la siguiente URL: @@ -122,7 +122,7 @@ o por si desearas personalizarlos: sección [Gii](tool-gii.md). -Resumen +Resumen ------- En esta sección, has aprendido a utilizar Gii para generar el código que implementa completamente las características diff --git a/docs/guide-es/start-hello.md b/docs/guide-es/start-hello.md index cc32eb80d6d..76ff1da77e9 100644 --- a/docs/guide-es/start-hello.md +++ b/docs/guide-es/start-hello.md @@ -15,7 +15,7 @@ A lo largo de este tutorial, aprenderás tres cosas: 3. Cómo una aplicación envía peticiones a las [acciones](structure-controllers.md#creating-actions). -Creando una Acción +Creando una Acción ------------------ Para la tarea "Hola", crearás una [acción](structure-controllers.md#creating-actions) `say` que lee @@ -70,7 +70,7 @@ El resultado es devuelto al método de la acción. Ese resultado será recibido navegador (como parte de una página HTML completa). -Creando una Vista +Creando una Vista ----------------- Las [vistas](structure-views.md) son scripts que escribes para generar una respuesta de contenido. @@ -95,7 +95,7 @@ De hecho, la vista `say` es sólo un script PHP que es ejecutado por el método El contenido impreso por el script de la vista será regresado a la aplicación como la respuesta del resultado. La aplicación a cambio mostrará el resultado al usuario final. -Probándolo +Probándolo ---------- Después de crear la acción y la vista, puedes acceder a la nueva página abriendo el siguiente URL: @@ -127,7 +127,7 @@ el método `SiteController::actionSay()` será llamado para manejar el requerimi al nombre de clase del controlador `PostComentarioController`. -Resumen +Resumen ------- En esta sección, has tocado las partes del controlador y la vista del patrón de diseño MVC. diff --git a/docs/guide-es/start-installation.md b/docs/guide-es/start-installation.md index d97861db52f..f39ec65daac 100644 --- a/docs/guide-es/start-installation.md +++ b/docs/guide-es/start-installation.md @@ -7,7 +7,7 @@ Es preferible usar la primera forma, ya que te permite instalar [extensiones](st > Nota: A diferencia de Yii 1, la instalación estándar de Yii 2 resulta en la descarga e instalación tanto del framework como del esqueleto de la aplicación. -Instalando a través de Composer +Instalando a través de Composer ------------------------------- Si aún no tienes Composer instalado, puedes hacerlo siguiendo las instrucciones que se encuentran en @@ -39,7 +39,7 @@ El comando anterior instala Yii dentro del directorio `basic`. > Ten en cuenta que la versión de desarrollo de Yii no debería ser usada para producción ya que podría romper el funcionamiento actual de la aplicación. -Instalando desde un Archivo Comprimido +Instalando desde un Archivo Comprimido -------------------------------------- Instalar Yii desde un archivo comprimido involucra dos pasos: @@ -48,7 +48,7 @@ Instalar Yii desde un archivo comprimido involucra dos pasos: 2. Descomprimirlo en un directorio accesible vía Web. -Otras Opciones de Instalación +Otras Opciones de Instalación ----------------------------- Las instrucciones anteriores muestran cómo instalar Yii, lo que también crea una aplicación Web lista para ser usada. @@ -62,7 +62,7 @@ Pero también hay otras opciones de instalación disponibles: deberías considerar instalar el [Template de Aplicación Avanzada](tutorial-advanced-app.md). -Verificando las Instalación +Verificando las Instalación --------------------------- Después de la instalación, puedes acceder a la aplicación instalada a través de la siguiente URL: @@ -92,7 +92,7 @@ También deberías instalar la [Extensión de PHP PDO](http://www.php.net/manual (como `pdo_mysql` para bases de datos MySQL), si tu aplicación lo necesitara. -Configurando Servidores Web +Configurando Servidores Web --------------------------- > Información: Puedes saltear esta sección por ahora si sólo estás probando Yii sin intención de poner la aplicación en un servidor de producción. @@ -115,7 +115,7 @@ la configuración del servidor Web, aún puedes ajustar la estructura de la apli la sección [Entorno de Hosting Compartido](tutorial-shared-hosting.md) para más detalles. -### Configuración Recomendada de Apache +### Configuración Recomendada de Apache Utiliza la siguiente configuración del archivo `httpd.conf` de Apache dentro de la configuración del virtual host. Ten en cuenta que deberás reemplazar `path/to/basic/web` con la ruta real a `basic/web`. @@ -138,7 +138,7 @@ DocumentRoot "path/to/basic/web" ``` -### Configuración Recomendada de Nginx +### Configuración Recomendada de Nginx Deberías haber instalado PHP como un [FPM SAPI](http://php.net/install.fpm) para utilizar [Nginx](http://wiki.nginx.org/). Utiliza la siguiente configuración de Nginx, reemplazando `path/to/basic/web` con la ruta real a `basic/web` y `mysite.local` con el diff --git a/docs/guide-es/start-workflow.md b/docs/guide-es/start-workflow.md index 5b16378fb6e..d2c952cad61 100644 --- a/docs/guide-es/start-workflow.md +++ b/docs/guide-es/start-workflow.md @@ -12,7 +12,7 @@ y cómo la aplicación maneja los requests en general. Dependiendo de tus necesidades, por favor ajusta dichas URLs. -Funcionalidad +Funcionalidad ------------- La aplicación básica contiene 4 páginas: @@ -32,7 +32,7 @@ Esta es la útil [herramienta de depuración](tool-debugger.md) provista por Yii tal como los mensajes de log, response status, las consultas ejecutadas a la base de datos, y más. -Estructura de la aplicación +Estructura de la aplicación --------------------------- Los archivos y directorios más importantes en tu aplicación son (asumiendo que la raíz de la aplicación es `basic`): @@ -74,7 +74,7 @@ y la envía al resto de los elementos MVC. Los [widgets](structure-widgets.md) s para ayudar a construir elementos de interfáz complejos y dinámicos. -Ciclo de Vida de una Petición (Request) +Ciclo de Vida de una Petición (Request) --------------------------------------- El siguiente diagrama muestra cómo una aplicación maneja una petición. diff --git a/docs/guide-es/structure-application-components.md b/docs/guide-es/structure-application-components.md index fd439636a00..c2645873b16 100644 --- a/docs/guide-es/structure-application-components.md +++ b/docs/guide-es/structure-application-components.md @@ -48,7 +48,7 @@ Por ejemplo: y utilizarlo únicamente cuando sea necesario. -## Componentes del Núcleo de la Aplicación +## Componentes del Núcleo de la Aplicación Yii define un grupo de componentes del *núcleo* con IDs fijos y configuraciones por defecto. Por ejemplo, el componente [[yii\web\Application::request|request]] es utilizado para recolectar información acerca diff --git a/docs/guide-es/structure-applications.md b/docs/guide-es/structure-applications.md index 024fee81567..81dc9463260 100644 --- a/docs/guide-es/structure-applications.md +++ b/docs/guide-es/structure-applications.md @@ -14,7 +14,7 @@ Hay dos tipos de aplicaciones: [[yii\web\Application|aplicaciones Web]] y Web requests mientras que la última maneja requests (peticiones) de la línea de comandos. -## Configuraciones de las Aplicaciones +## Configuraciones de las Aplicaciones Cuando un [script de entrada](structure-entry-scripts.md) crea una aplicación, cargará una [configuración](concept-configurations.md) y la aplicará a la aplicación, como se muestra a continuación: @@ -36,7 +36,7 @@ suelen ser complejas, son usualmente guardadas en [archivos de configuración](c como en el archivo `web.php` del ejemplo anterior. -## Propiedades de la Aplicación +## Propiedades de la Aplicación Hay muchas propiedades importantes en la aplicación que deberían configurarse en en la configuración de la aplicación. Estas propiedades suelen describir el entorno en el cual la aplicación está corriendo. @@ -44,20 +44,20 @@ Por ejemplo, las aplicaciones necesitan saber cómo cargar [controladores](struc dónde guardar archivos temporales, etc. A continuación, resumiremos esas propiedades. -### Propiedades Requeridas +### Propiedades Requeridas En cualquier aplicación, debes configurar al menos dos propiedades: [[yii\base\Application::id|id]] y [[yii\base\Application::basePath|basePath]]. -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] La propiedad [[yii\base\Application::id|id]] especifica un ID único que diferencia una aplicación de otras. Es mayormente utilizada a nivel programación. A pesar de que no es un requerimiento, para una mejor interoperabilidad, se recomienda utilizar sólo caracteres alfanuméricos. -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] La propiedad [[yii\base\Application::basePath|basePath]] especifica el directorio raíz de una aplicación. Es el directorio que alberga todos los archivos protegidos de un sistema. Bajo este directorio, @@ -73,13 +73,13 @@ La propiedad [[yii\base\Application::basePath|basePath]] es utilizada a menudo d Rutas derivadas pueden ser entonces creadas a partir de este alias (ej. `@app/runtime` para referirse al directorio `runtime`). -### Propiedades Importantes +### Propiedades Importantes Las propiedades descritas en esta subsección a menudo necesita ser configurada porque difieren entre las diferentes aplicaciones. -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] Esta propiedad te permite definir un grupo de [alias](concept-aliases.md) en términos de un array (matriz). Las claves del array son los nombres de los alias, y los valores su correspondiente definición. @@ -98,7 +98,7 @@ Esta propiedad está provista de tal manera que puedas definir alias en término en vez de llamadas al método [[Yii::setAlias()]]. -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] Esta es una propiedad importante. Te permite definir un array de los componentes que deben ejecutarse durante el [[yii\base\Application::bootstrap()|proceso de `bootstrapping`]] de la aplicación. @@ -154,7 +154,7 @@ if (YII_ENV_DEV) { por cada request, se necesita correr el mismo grupo de componentes. Por lo tanto, utiliza componentes `bootstrap` con criterio. -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] Esta propiedad está solamente soportada por [[yii\web\Application|aplicaciones Web]]. Especifica la [acción de controlador](structure-controllers.md) que debería manejar todos los requests (peticiones) del usuario. @@ -176,7 +176,7 @@ Por ejemplo: ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] Esta es la propiedad más importante. Te permite registrar una lista de componentes llamados [componentes de aplicación](#structure-application-components.md) que puedes utilizar en otras partes de tu aplicación. Por ejemplo: @@ -204,7 +204,7 @@ la expresión `\Yii::$app->ComponentID`. Por favor, lee la sección [Componentes de la Aplicación](structure-application-components.md) para mayor detalle. -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] Esta propiedad te permite mapear un ID de controlador a una clase de controlador arbitraria. Por defecto, Yii mapea ID de controladores a clases de controladores basado en una [convención](#controllerNamespace) (ej. el ID `post` será mapeado @@ -230,7 +230,7 @@ Las claves de este array representan los ID de los controladores, mientras que l los nombres de clase de dichos controladores o una [configuración](concept-configurations.md). -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] Esta propiedad especifica el `namespace` bajo el cual las clases de los controladores deben ser ubicados. Por defecto es `app\controllers`. Si el ID es `post`, por convención el controlador correspondiente (sin @@ -246,7 +246,7 @@ un error "Page Not Found" ("Página no Encontrada") cuando accedas a la aplicaci En caso de que quieras romper con la convención cómo se comenta arriba, puedes configurar la propiedad [controllerMap](#controllerMap). -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] Esta propiedad especifica el idioma en el cual la aplicación debería mostrar el contenido a los usuarios. El valor por defecto de esta propiedad es `en`, referido a English. Deberías configurar esta propiedad @@ -263,7 +263,7 @@ Por ejemplo, `en` se refiere a English, mientras que `en-US` se refiere a Englis Se pueden encontrar más detalles de este aspecto en la sección [Internacionalización](tutorial-i18n.md). -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] Esta propiedad especifica los [módulos](structure-modules.md) que contiene la aplicación. @@ -288,7 +288,7 @@ los IDs de los módulos. Por ejemplo: Por favor consulta la sección [Módulos](structure-modules.md) para más detalles. -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] Esta propiedad especifica el nombre de la aplicación que será mostrado a los usuarios. Al contrario de [[yii\base\Application::id|id]], que debe tomar un valor único, el valor de esta propiedad existe principalmente @@ -297,7 +297,7 @@ para propósito de visualización y no tiene porqué ser única. No siempre necesitas configurar esta propiedad si en tu aplicación no va a ser utilizada. -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] Esta propiedad especifica un array con parámetros accesibles desde cualquier lugar de tu aplicación. En vez de usar números y cadenas fijas por todos lados en tu código, es una buena práctica definirlos como @@ -323,7 +323,7 @@ Más adelante, si decides cambiar el tamaño de las miniaturas, sólo necesitas sin necesidad de tocar el código que lo utiliza. -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] Esta propiedad especifica el idioma en el cual la aplicación está escrita. El valor por defecto es `'en-US'`, referido a English (United States). Deberías configurar esta propiedad si el contenido de texto en tu código no está en inglés. @@ -334,7 +334,7 @@ Por ejemplo, `en` se refiere a English, mientras que `en-US` se refiere a Englis Puedes encontrar más detalles de esta propiedad en la sección [Internacionalización](tutorial-i18n.md). -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] Esta propiedad es provista como una forma alternativa de definir el `time zone` de PHP por defecto en tiempo de ejecución. Configurando esta propiedad, escencialmente estás llamando a la función de PHP [date_default_timezone_set()](http://php.net/manual/es/function.date-default-timezone-set.php). @@ -347,25 +347,25 @@ Por ejemplo: ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] Esta propiedad especifica la versión de la aplicación. Es por defecto `'1.0'`. No hay total necesidad de configurarla si tu no la usarás en tu código. -### Propiedades Útiles +### Propiedades Útiles Las propiedades especificadas en esta sub-sección no son configuradas normalmente ya que sus valores por defecto estipulan convenciones comunes. De cualquier modo, aún puedes configurarlas en caso de que quieras romper con la convención. -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] Esta propiedad especifica el `charset` que la aplicación utiliza. El valor por defecto es `'UTF-8'`, que debería ser mantenido tal cual para la mayoría de las aplicaciones a menos que estés trabajando con sistemas legados que utilizan muchos datos no-unicode. -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] Esta propiedad especifica la [ruta](runtime-routing.md) que una aplicación debería utilizar si el `request` no especifica una. La ruta puede consistir el ID de un sub-módulo, el ID de un controlador, y/o el ID de una acción. @@ -381,7 +381,7 @@ Para [yii\console\Application|aplicaciones de consola], el valor por defecto es sin proveer ningún argumento, mostrará la información de ayuda. -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] Esta propiedad especifica la lista de [extensiones](structure-extensions.md) que se encuentran instaladas y son utilizadas por la aplicación. @@ -416,7 +416,7 @@ un elemento `bootstrap` puede ser especificado con un nombre de clase o un array Una extensión también puede definir algunos [alias](concept-aliases.md). -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] Esta propiedad especifica el valor del `layout` por defecto que será utilizado al renderizar una [vista](structure-views.md). El valor por defecto es `'main'`, y se refiere al archivo `main.php` bajo el [`layout path`](#layoutPath) definido. @@ -427,7 +427,7 @@ Puedes configurar esta propiedad con el valor `false` si quieres desactivar el ` caso muy raro. -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] Esta propiedad especifica el lugar por defecto donde deben buscarse los archivos `layout`. El valor por defecto es el sub-directorio `layouts` bajo el [`view path`](#viewPath). Si el [`view path`](#viewPath) usa su valor por defecto, @@ -436,7 +436,7 @@ el `layout path` puede ser representado con el alias `@app/views/layouts`. Puedes configurarlo como un directorio o utilizar un [alias](concept-aliases.md). -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] Esta propiedad especifica dónde serán guardados los archivos temporales, como archivos de log y de cache, pueden ser generados. El valor por defecto de esta propiedad es el alias `@app/runtime`. @@ -448,13 +448,13 @@ de ser accedido por usuarios finales, ya que los archivos generados pueden tener Para simplificar el acceso a este directorio, Yii trae predefinido el alias `@runtime` para él. -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] Esta propiedad especifica dónde están ubicados los archivos de la vista. El valor por defecto de esta propiedad está representado por el alias `@app/views`. Puedes configurarlo como un directorio o utilizar un [alias](concept-aliases.md). -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] Esta propiedad especifica el directorio `vendor` que maneja [Composer](http://getcomposer.org). Contiene todas las librerías de terceros utilizadas por tu aplicación, incluyendo el núcleo de Yii. Su valor por defecto @@ -466,14 +466,14 @@ asegúrate de ajustar la configuración de Composer en concordancia. Para simplificar el acceso a esta ruta, Yii trae predefinido el alias `@vendor`. -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] Esta propiedad está sólo soportada por [[yii\console\Application|aplicaciones de consola]]. Especifica si los comandos de consola incluidos en Yii deberían estar habilitados o no. Por defecto está definido como `true`. -## Eventos de la Aplicación +## Eventos de la Aplicación Una aplicación dispara varios eventos durante su ciclo de vida al manejar un `request`. Puedes conectar manejadores a dichos eventos en la configuración de la aplicación como se muestra a continuación: @@ -497,7 +497,7 @@ después de que la instancia de la aplicación es creada. Por ejemplo: }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] Este evento es disparado *before* (antes) de que la aplicación maneje el `request`. El nombre del evento es `beforeRequest`. @@ -507,7 +507,7 @@ Por ejemplo, en el manejador del evento, podrías definir dinámicamente la prop basada en algunos parámetros. -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_AFTER_REQUEST]] Este evento es disparado *after* (después) de que una aplicación finaliza el manejo de un `request` pero *before* (antes) de enviar el `response` (respuesta). El nombre del evento es `afterRequest`. @@ -519,7 +519,7 @@ Ten en cuenta que el componente [[yii\web\Response|response]] también dispara a a los usuarios finales. Estos eventos son disparados *after* (después) de este evento. -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_ACTION]] Este evento es disparado *before* (antes) de ejecutar cualquier [acción de controlador](structure-controllers.md). El nombre de este evento es `beforeAction`. @@ -545,7 +545,7 @@ seguidos por módulos (si los hubiera), y finalmente controladores. Si un maneja como `false`, todos los eventos siguientes NO serán disparados. -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_AFTER_ACTION]] Este evento es disparado *after* (después) de ejecutar cualquier [acción de controlador](structure-controllers.md). El nombre de este evento es `afterAction`. @@ -571,7 +571,7 @@ que los de `beforeAction`. Esto quiere decir que los controladores son los prime seguido por módulos (si los hubiera), y finalmente aplicaciones. -## Ciclo de Vida de una Aplicación +## Ciclo de Vida de una Aplicación Cuando un [script de entrada](structure-entry-scripts.md) está siendo ejecutado para manejar un `request`, una aplicación experimenta el siguiente ciclo de vida: diff --git a/docs/guide-es/structure-assets.md b/docs/guide-es/structure-assets.md index 23510f3ba88..8f3ea954b9d 100644 --- a/docs/guide-es/structure-assets.md +++ b/docs/guide-es/structure-assets.md @@ -11,13 +11,13 @@ de tener que buscar los archivos e incluirlos manualmente. Y cuando se actualice usará de forma automática la nueva versión de los archivos asset. En este tutorial, se describirá la poderosa capacidad que proporciona la gestión de assets en Yii. -## Asset Bundles +## Asset Bundles Yii gestiona los assets en unidades de *asset bundle*. Un asset bundle es simplemente un conjunto de assets localizados en un directorio. Cuando se registra un asset bundle en una [vista](structure-views.md), éste incluirá los archivos CSS y JavaScript del bundle en la página Web renderizada. -## Definición de Asset Bundles +## Definición de Asset Bundles Los asset bundles son descritos como clases PHP que extienden a [[yii\web\AssetBundle]]. El nombre del bundle es simplemente su correspondiente nombre de la classe PHP que debe ser [autocargable](concept-autoloading.md). En una @@ -89,7 +89,7 @@ A continuación se explicarán más detalladamente las propiedades del [[yii\web directorio Web. Solo se usa si se especifica la propiedad [[yii\web\AssetBundle::sourcePath|sourcePath]]. -### Ubicación de los Assets +### Ubicación de los Assets Según la localización de los assets, se pueden clasificar como: @@ -118,7 +118,7 @@ fuente, en directorios que no son accesibles para la Web, se tiene que especific por defecto por el [[yii\web\AssetManager|asset manager]] para guardar los archivos asset publicados temporalmente y pueden ser eliminados. -### Dependencias de los Asset +### Dependencias de los Asset Cuando se incluyen múltiples archivos CSS o JavaScript en una página Web, tienen que cumplir ciertas órdenes para evitar problemas de sobrescritura. Por ejemplo, si se usa un widget jQuery UI en una página Web, tenemos que @@ -133,7 +133,7 @@ que los archivos de los dos bundles dependientes. Las dependencias son transitivas. Esto significa, que si un bundle A depende de un bundle B que depende de C, A dependerá de C, también. -### Opciones de los Assets +### Opciones de los Assets Se pueden especificar las propiedades [[yii\web\AssetBundle::cssOptions|cssOptions]] y [[yii\web\AssetBundle::jsOptions|jsOptions]] para personalizar la forma en que los archivos CSS y JavaScript serán @@ -205,7 +205,7 @@ class FontAwesomeAsset extends AssetBundle El ejemplo anterior define un asset bundle para el ["fontawesome" package](http://fontawesome.io/). Especificando la opción de publicación `beforeCopy`, solo los subdirectorios `fonts` y `css` serán publicados. -### Bower y NPM Assets +### Bower y NPM Assets La mayoría de paquetes JavaScript/CSS se gestionan con [Bower](http://bower.io/) y/o [NPM](https://www.npmjs.org/). Si tu aplicación o extensión usa estos paquetes, se recomienda seguir los siguientes pasos para gestionar los assets en @@ -223,7 +223,7 @@ Si tu aplicación o extensión usa estos paquetes, se recomienda seguir los sigu subdirectorio como valor del [[yii\web\AssetBundle::sourcePath|sourcePath]]. Por ejemplo, [[yii\web\JqueryAsset]] usa `@bower/jquery/dist` en vez de `@bower/jquery`. -## Uso de Asset Bundles +## Uso de Asset Bundles Para usar un asset bundle, debe registrarse con una [vista](structure-views.md) llamando al método [[yii\web\AssetBundle::register()]]. Por ejemplo, en plantilla de vista se puede registrar un asset bundle como en el @@ -249,7 +249,7 @@ los archivos CSS y JavaScript listados en los bundles registrados. El orden de e las dependencias entre los bundles registrados y los otros assets listados en las propiedades [[yii\web\AssetBundle::css]] y [[yii\web\AssetBundle::js]]. -### Personalización de Asset Bundles +### Personalización de Asset Bundles Yii gestiona los asset bundles a través de un componente de aplicación llamado `assetManager` que está implementado por [[yii\web\AssetManager]]. Configurando la propiedad [[yii\web\AssetManager::bundles]], se puede personalizar el @@ -311,7 +311,7 @@ return [ Además se pueden deshabilitar *todos* los asset bundles asignando `false` a [[yii\web\AssetManager::bundles]]. -### Mapeo de Assets (Asset Mapping) +### Mapeo de Assets (Asset Mapping) A veces se puede querer "arreglar" rutas de archivos incorrectos/incompatibles usadas en múltiples asset bundles. Por ejemplo, el bundle A usa `jquery.min.js` con versión 1.11.1, y el bundle B usa `jquery.js` con versión 2.11.1. @@ -343,7 +343,7 @@ Por ejemplo, un archivo asset `mi/ruta/a/jquery.js` concuerda con la clave `jque > Nota: Sólo los assets especificados usando rutas relativas están sujetos al mapeo de assets. Y las rutas de los assets destino deben ser tanto URLs absolutas o rutas relativas a [[yii\web\AssetManager::basePath]]. -### Publicación de Asset +### Publicación de Asset Como se ha comentado anteriormente, si un asset bundle se encuentra en un directorio que no es accesible por la Web, este asset será copiado a un directorio Web cuando se registre el bundle con una vista. Este proceso se llama @@ -371,7 +371,7 @@ return [ Con la anterior configuración, el gestor de assets creará un enlace simbólico a la ruta de origen del asset bundle cuando éste sea publicado. Esto es más rápido que copiar archivos y también asegura que siempre estén actualizados. -## Los Asset Bundles más Comunes +## Los Asset Bundles más Comunes El código del núcleo de Yii tiene definidos varios asset bundles. Entre ellos, los siguientes bundles son los más usados y pueden referenciarse en códigos de aplicaciones o extensiones. @@ -389,7 +389,7 @@ Si el código depende de jQuery, jQuery UI o Bootstrap, se pueden usar estos ass crear versiones propias. Si la configuración predeterminada de estos bundles no satisface las necesidades, se puede personalizar como se describe en la subsección [Personalización de Asset Bundles](#customizing-asset-bundles). -## Conversión de Assets +## Conversión de Assets En lugar de escribir código CSS y/o JavaScript directamente, los desarrolladores a menudo escriben código usando una sintaxis extendida y usan herramientas especiales para convertirlos en CSS/JavaScript. Por ejemplo, para código CSS se @@ -464,7 +464,7 @@ de destino de los archivos asset. monitorear y convertir automáticamente los assets de sintaxis extendidas. En este caso, se deben listar los archivos CSS/JavaScript resultantes en lugar de los archivos de originales. -## Combinación y Compresión de Assets +## Combinación y Compresión de Assets Una página web puede incluir muchos archivos CSS y/o JavaScript. Para reducir el número de peticiones (requests) HTTP y el tamaño total de descarga de estos archivos, una práctica común es combinar y comprimir uno o @@ -490,7 +490,7 @@ Usando este propuesta, cuando se registre un asset bundle en una vista, se gener asset bundle para el grupo al que pertenece el bundle original. Y como resultado, los archivos combinados/comprimidos se incluyen en la página, en lugar de los originales. -### Un Example +### Un Example Vamos a usar un ejemplo para explicar la propuesta anterior. @@ -566,7 +566,7 @@ return [ Es decir, el array de configuración del asset bundle se guarda en `asset-prod.php` para el modo de producción, y `assets-del.php` para los otros modos. -### Uso del Comando `asset` +### Uso del Comando `asset` Yii proporciona un comando de consola llamado `asset` para automatizar el enfoque descrito. diff --git a/docs/guide-es/structure-controllers.md b/docs/guide-es/structure-controllers.md index e34f815395e..b9d1aed7467 100644 --- a/docs/guide-es/structure-controllers.md +++ b/docs/guide-es/structure-controllers.md @@ -8,7 +8,7 @@ los controladores analizarán los datos que entran en el `request`, los pasan a modelos resultantes a las [vistas](structure-views.md), y finalmente generan los `responses` (respuestas) de salida. -## Acciones +## Acciones Los Controladores están compuestos por *acciones* que son las unidades más básicas a las que los usuarios pueden dirigirse y solicitar ejecución. Un controlador puede tener una o múltiples acciones. @@ -62,7 +62,7 @@ el navegador a la acción `view` con el ID del modelo recientemente creado. De o la vista `create` a través de la cual el usuario puede completar los campos necesarios. -## Routes +## Routes Los usuarios ejecutan las acciones a través de las llamadas *routes* (rutas). una ruta es una cadena que consiste en las siguientes partes: @@ -88,7 +88,7 @@ será ejecutado. Para más detalles acerca de cómo las son resueltas en accione la sección [Routing](runtime-routing.md). -## Creando Controladores +## Creando Controladores En [[yii\web\Application|aplicaciones Web]], los controladores deben extender de [[yii\web\Controller]] o cualquier clase hija. De forma similar los controladores de [[yii\console\Application|aplicaciones de consola]], deben extender @@ -105,7 +105,7 @@ class SiteController extends Controller ``` -### IDs de Controladores +### IDs de Controladores Normalmente, un controlador está diseñado para manejar los `requests` de acuerdo a un tipo de recurso. Por esta razón, los IDs de controladores son a menudo sustantivos de los tipos de recurso que están manejando. @@ -119,7 +119,7 @@ Los guiones en un ID de controlador son utilizados para separar palabras, mientr organizar los controladores en sub-directorios. -### Nombres de Clases de Controladores +### Nombres de Clases de Controladores Los nombres de clases de controladores pueden ser derivados de los IDs de acuerdo a las siguientes reglas: @@ -146,7 +146,7 @@ en `@app/controllers/admin/Post2CommentController.php`. tus controladores en varias categorías pero sin utilizar [módulos](structure-modules.md). -### Controller Map +### Controller Map Puedes configurar [[yii\base\Application::controllerMap|controller map]] (mapeo de controladores) para superar las restricciones de los IDs de controladores y sus nombres de clase descritos arriba. Esto es principalmente útil cuando estás utilizando un @@ -173,7 +173,7 @@ Puedes configurar [[yii\base\Application::controllerMap|controller map]] en la ``` -### Controller por Defecto +### Controller por Defecto Cada aplicación tiene un controlador por defecto especificado a través de la propiedad [[yii\base\Application::defaultRoute]]. Cuando un `request` no especifica una [ruta](#ids-routes), se utilizará la ruta especificada en esta propiedad. @@ -189,7 +189,7 @@ Puedes cambiar el controlador por defecto con la siguiente [configuración de la ``` -## Creando Acciones +## Creando Acciones Crear acciones puede ser tan simple como definir un llamado *método de acción* en una clase controlador. Un método de acción es un método *public* cuyo nombre comienza con la palabra `action`. El valor de retorno de uno de estos métodos representa @@ -215,7 +215,7 @@ class SiteController extends Controller ``` -### IDs de Acciones +### IDs de Acciones Una acción está a menudo diseñada para realizar una manipulación particular de un recurso. Por esta razón, los IDs de acciones son usualmente verbos, como `view` (ver), `update` (actualizar), etc. @@ -231,7 +231,7 @@ si no tienes intenciones de volver a utilizarlas. Las acciones independientes, p creadas para ser reutilizadas en otros controladores o para ser redistribuidas como [extensiones](structure-extensions.md). -### Acciones en Línea +### Acciones en Línea Como acciones en línea nos referimos a acciones que son definidas en términos de métodos como acabamos de describir. @@ -254,7 +254,7 @@ si planeas reutilizar la misma acción en diferentes lugares, o quieres redistri deberías considerar definirla como un *acción independiente*. -### Acciones Independientes +### Acciones Independientes Las acciones independientes son acciones definidas en términos de clases de acción que extienden de [[yii\base\Action]] o cualquiera de sus clases hijas. Por ejemplo, en Yii se encuentran las clases [[yii\web\ViewAction]] y [[yii\web\ErrorAction]], de las cuales ambas son acciones independientes. @@ -302,7 +302,7 @@ class HelloWorldAction extends Action ``` -### Resultados de Acción +### Resultados de Acción El valor de retorno de una método de acción o del método `run()` de una acción independiente son significativos. Este se refiere al resultado de la acción correspondiente. @@ -329,7 +329,7 @@ public function actionForward() ``` -### Parámetros de Acción +### Parámetros de Acción Los métodos de acción para acciones en línea y el método `run()` de acciones independientes pueden tomar parámetros, llamados *parámetros de acción*. Sus valores son obtenidos del `request`. Para [[yii\web\Application|aplicaciones Web]], @@ -381,7 +381,7 @@ Los ejemplos de arriba muestran principalmente como funcionan los parámetros de por favor consulta la sección [Comandos de Consola](tutorial-console.md) para más detalles. -### Acción por Defecto +### Acción por Defecto Cada controlador tiene una acción por defecto especificada a través de la propiedad [[yii\base\Controller::defaultAction]]. Cuando una [ruta](#ids-routes) contiene sólo el ID del controlador, implica que se está solicitando la acción por defecto @@ -407,7 +407,7 @@ class SiteController extends Controller ``` -## Ciclo de Vida del Controlador +## Ciclo de Vida del Controlador Cuando se procesa un `request`, la [aplicación](structure-applications.md) creará un controlador basado en la [ruta](#routes) solicitada. El controlador entonces irá a través del siguiente ciclo de vida @@ -433,7 +433,7 @@ para completar el `request`: 6. La aplicación tomará el resultado de la acción y lo asignará al [response](runtime-responses.md). -## Buenas Prácticas +## Buenas Prácticas En una aplicación bien diseñada, los controladores son a menudo muy pequeños con cada acción conteniendo unas pocas líneas de código. Si tu controlador se torna muy complejo, es usualmente un indicador de que deberías realizar una refactorización y mover algo de diff --git a/docs/guide-es/structure-entry-scripts.md b/docs/guide-es/structure-entry-scripts.md index 171dc3b1c27..972513f44b0 100644 --- a/docs/guide-es/structure-entry-scripts.md +++ b/docs/guide-es/structure-entry-scripts.md @@ -23,7 +23,7 @@ El script de entrada principalmente hace los siguientes trabajos: * Crear y configurar una instancia de [aplicación](structure-applications.md); * Llamar a [[yii\base\Application::run()]] para procesar la petición entrante. -## Aplicaciones Web +## Aplicaciones Web El siguiente código es el script de entrada para la [Plantilla de Aplicación web Básica](start-installation.md). @@ -46,7 +46,7 @@ $config = require(__DIR__ . '/../config/web.php'); (new yii\web\Application($config))->run(); ``` -## Aplicaciones de consola +## Aplicaciones de consola De la misma manera, el siguiente código es el script de entrada para la [aplicación de consola](tutorial-console.md): @@ -81,7 +81,7 @@ $exitCode = $application->run(); exit($exitCode); ``` -## Definición de Constantes +## Definición de Constantes El script de entrada es el mejor lugar para definir constantes globales. Yii soporta las siguientes tres constantes: diff --git a/docs/guide-es/structure-extensions.md b/docs/guide-es/structure-extensions.md index b77d78fa5ab..8ce45dbe095 100644 --- a/docs/guide-es/structure-extensions.md +++ b/docs/guide-es/structure-extensions.md @@ -11,7 +11,7 @@ proceso de desarrollo. También se puede empaquetar código propio para comparti propósitos generales los paquetes de software pueden usarse sin Yii, nos referiremos a ellos usando los términos "paquetes" (package) o "librerías" (library). -## Uso de Extensiones +## Uso de Extensiones Para usar una extension, primero tenemos que instalarla. La mayoría de extensiones se usan como paquetes [Composer](https://getcomposer.org/) que se pueden instalar mediante los dos simples siguientes pasos: @@ -71,7 +71,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) > Información: Las clases de extensiones se cargan automáticamente gracias a [autocarga de clases de Yii](concept-autoloading.md). -### Instalación Manual de Extensiones +### Instalación Manual de Extensiones En algunas ocasiones excepcionales es posible que tengamos que instalar alguna o todas las extensiones manualmente, en lugar de utilizar Composer. Para lograrlo, debemos: @@ -96,7 +96,7 @@ aplicación: ] ``` -## Creación de Extensiones +## Creación de Extensiones Podemos considerar la creación de una extensión cuando tengamos la necesidad de compartir nuestro código. Cada extensión puede contener el código que se desee, puede ser una clase de ayuda (helper class), un widget, un módulo, @@ -115,7 +115,7 @@ Más adelante se encuentran los pasos básicos que deben seguirse para crear una 3. Registrar la extensión en un repositorio de Composer como puede ser [Packagist](https://packagist.org/), para que los otros usuarios puedan encontrarlo e instalarla mediante Composer. -### `composer.json` +### `composer.json` Cada paquete de Composer tiene que tener un archivo `composer.json` en su directorio raíz. El archivo contiene los metadatos relacionados con el paquete. Se pueden encontrar especificaciones completas acerca de este fichero en el @@ -162,7 +162,7 @@ muestra el archivo `composer.json` para la extensión `yiisoft/yii2-imagine`: } ``` -#### Nombre del Paquete +#### Nombre del Paquete Cada paquete Composer debe tener un nombre de paquete que identifique de entre todos los otros paquetes. El formato del nombre del paquete es `nombreProveedor/nombreProyecto`. Por ejemplo, el nombre de paquete `yiisoft/yii2-imagine`, @@ -175,7 +175,7 @@ Recomendamos usar el prefijo `yii2-` al nombre del proyecto para paquetes que re ejemplo, `minombre/yii2-miwidget`. Esto permite ver a los usuarios más fácilmente si un paquete es una extensión de Yii 2. -#### Tipo de Paquete +#### Tipo de Paquete Es importante que se especifique el tipo del paquete de la extensión como `yii2-extension` para que el paquete pueda ser reconocido como una extensión de Yii cuando se esté instalando. @@ -185,7 +185,7 @@ se actualizará automáticamente para incluir la información acerca de la nueva aplicaciones Yii pueden saber que extensiones están instaladas. (se puede acceder a esta información mediante [[yii\base\Application::extensions]]). -#### Dependencias +#### Dependencias La extensión depende de Yii (por supuesto). Por ello se debe añadir (`yiisoft/yii2`) a la lista en la entrada `required` del archivo `composer.json`. Si la extensión también depende de otras extensiones o de terceras @@ -216,7 +216,7 @@ referencia a estos dos directorios usando los alias `@bower/NombrePaquete` and ` Para obtener más detalles acerca de la gestión de assets, puede hacerse referencia a la sección [Assets](structure-assets.md#bower-npm-assets). -#### Autocarga de Clases +#### Autocarga de Clases Para que se aplique la autocarga a clases propias mediante la autocarga de clases de Yii o la autocarga de clases de Composer, debemos especificar la entrada `autoload` en el archivo `composer.json` como se puede ver a continuación: @@ -239,13 +239,13 @@ Cuando se instala la extensión en una aplicación, Yii creara un [alias](concep todos los namespaces raíz, que harán referencia al directorio correspondiente del namespace. Por ejemplo, la anterior declaración `autoload` corresponderá a un alias llamado `@yii/imagine`. -### Prácticas Recomendadas +### Prácticas Recomendadas Dado que las extensiones están destinadas a ser utilizadas por otras personas, a menudo es necesario hacer un esfuerzo extra durante el desarrollo. A continuación presentaremos algunas practicas comunes y recomendadas para la creación de extensiones de alta calidad. -#### Namespaces +#### Namespaces Para evitar colisiones de nombres y permitir que las clases usen la autocarga en extensiones propias, se deben usar namespaces y nombres de clase siguiendo el [estándar PSR-4](http://www.php-fig.org/psr/psr-4/) o el @@ -258,7 +258,7 @@ similar al nombre del paquete pero este no debe contener el prefijo `yii2-`. Por No se puede usar `yii`, `yii2` o `yiisoft` como nombre de proveedor. Estos nombres están reservados para usarse en el código del núcleo de Yii. -#### Clases de Bootstrapping +#### Clases de Bootstrapping A veces, se puede querer que nuestras extensiones ejecuten algo de código durante el [proceso de bootstrapping](runtime-bootstrapping.md) de una aplicación. Por ejemplo, queremos que nuestra extensión @@ -302,7 +302,7 @@ a continuación, Cuando se instala la extensión en la aplicación, Yii automáticamente instancia la clase de bootstrapping y llama a su método [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] durante el proceso de bootstrapping para cada petición. -#### Trabajar con Bases de Datos +#### Trabajar con Bases de Datos Puede darse el caso en que la extensión necesite acceso a bases de datos. No se debe asumir que las aplicaciones que usen la extensión siempre usarán `Yii::$db` como conexión de BBDD. Se debe crear una propiedad `db` para las clases @@ -317,7 +317,7 @@ Si nuestra extensión necesita crear tablas especificas en la BBDD o hacer cambi - intentar hacer las migraciones aplicables a varios Sistemas de Gestión de BBDD; - evitar usar [Active Record](db-active-record.md) en las migraciones. -#### Uso de Assets +#### Uso de Assets Si nuestra aplicación es un widget o un módulo, hay posibilidades de que requiera [assets](structure-assets.md) para poder funcionar. Por ejemplo, un modulo puede mostrar algunas páginas de que contengan archivos JavaScript y/o CSS. @@ -331,7 +331,7 @@ se instalan en una aplicación, hay dos maneras de hacer los assets accesibles v Recomendamos el uso de la segunda propuesta para que la extensión sea más fácil de usar para usuarios. Se puede hacer referencia a la sección [Assets](structure-assets.md) para encontrar más detalles acerca de como trabajar con ellos. -#### Internacionalización y Localización +#### Internacionalización y Localización Puede que las extensiones propias se usen en aplicaciones que den soporte a diferentes idiomas! Por ello, si nuestra extensión muestra contenido a los usuarios finales, se debe intentar [internacionalizar y localizar](tutorial-i18n.md) @@ -345,7 +345,7 @@ la extensión. En particular, Se pueden encontrar más detalles en la sección [internacionalización](tutorial-i18n.md). -#### Testing +#### Testing Para conseguir que las aplicaciones propias se ejecuten sin problemas y no causen problemas a otros usuarios, deben ejecutarse test a las extensiones antes de ser publicadas al público. @@ -356,12 +356,12 @@ de prueba para asegurarnos de que todo está correcto. Yii proporciona soporte p pruebas unitarias (unit tests), pruebas de aceptación (acceptance tests) y pruebas de funcionalidad (functionality tests), más fácilmente. Se pueden encontrar más detalles en la sección [Testing](test-overview.md). -#### Versiones +#### Versiones Se debe asignar un número de versión cada vez que se lance una nueva distribución. (ej. `1.0.1`). Recomendamos seguir la práctica [Versionamiento Semántico](http://semver.org/lang/es/) para determinar que números se deben usar. -#### Lanzamientos +#### Lanzamientos Para dar a conocer nuestra extensión a terceras personas, debemos lanzara al público. @@ -395,7 +395,7 @@ mencionados a continuación para facilitar a otra gente el uso de nuestra extens [estilo de código del núcleo del framework](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style) para obtener más detalles. -## Extensiones del Núcleo +## Extensiones del Núcleo Yii proporciona las siguientes extensiones del núcleo que son desarrolladas y mantenidas por el equipo de desarrollo de Yii. Todas ellas están registradas en [Packagist](https://packagist.org/) y pueden ser instaladas fácilmente como diff --git a/docs/guide-es/structure-filters.md b/docs/guide-es/structure-filters.md index 28b85374430..1cc4bb6ff0c 100644 --- a/docs/guide-es/structure-filters.md +++ b/docs/guide-es/structure-filters.md @@ -10,7 +10,7 @@ ser enviado al usuario final. Un filtro puede consistir en un pre-filtro (lógica de filtrado aplicada *antes* de las acciones) y/o un post-filtro (lógica de filtro aplicada *después* de las acciones). -## Uso de Filtros +## Uso de Filtros Los filtros son esencialmente un tipo especial de [comportamientos (behaviors)](concept-behaviors.md). Por lo tanto, usar filtros es lo mismo que [uso de comportamientos](concept-behaviors.md#attaching-behaviors). Se @@ -65,7 +65,7 @@ Cuando se configuran múltiples filtros para una misma acción, se aplican de ac - Aplica los filtros declarados en el modulo en orden inverso al de aparición en `behaviors()`. - Aplica los filtros declarados en la aplicación en orden inverso al de aparición en `behaviors()`. -##Creación de Filtros +##Creación de Filtros Para crear un nuevo filtro de acción, hay que extender a [[yii\base\ActionFilter]] y sobrescribir los métodos [[yii\base\ActionFilter::beforeAction()|beforeAction()]] y/o [[yii\base\ActionFilter::afterAction()|afterAction()]]. @@ -100,12 +100,12 @@ class ActionTimeFilter extends ActionFilter } ``` -## Filtros del Núcleo +## Filtros del Núcleo Yii proporciona una serie de filtros de uso general, que se encuentran principalmente en `yii\filters` namespace. En adelante introduciremos estos filtros brevemente. -### [[yii\filters\AccessControl|AccessControl]] +### [[yii\filters\AccessControl|AccessControl]] AccessControl proporciona control de acceso simple basado en un conjunto de [[yii\filters\AccessControl::rules|rules]]. En concreto, antes de ejecutar una acción, AccessControl examinará la lista de reglas y encontrará la primera que @@ -142,7 +142,7 @@ public function behaviors() Para conocer más detalles acerca del control de acceso en general, refiérase a la sección de [Autorización](security-authorization.md) -### Filtros del Método de Autenticación +### Filtros del Método de Autenticación Los filtros del método de autenticación se usan para autenticar a un usuario utilizando varios métodos, tales como la [Autenticación de acceso básico HTTP](http://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_acceso_b%C3%A1sica), @@ -230,7 +230,7 @@ use yii\web\Response; será utilizando el primer elemento de formato e idioma de la lista [[formats]] y [[lenguages]]. -### [[yii\filters\HttpCache|HttpCache]] +### [[yii\filters\HttpCache|HttpCache]] HttpCache implementa un almacenamiento caché del lado del cliente utilizando las cabeceras HTTP 'Last-Modified' y 'Etag'. Por ejemplo: @@ -255,7 +255,7 @@ public function behaviors() Para conocer más detalles acerca de HttpCache refiérase a la sección [almacenamiento caché HTTP](caching-http.md). -### [[yii\filters\PageCache|PageCache]] +### [[yii\filters\PageCache|PageCache]] PageCache implementa una caché por parte del servidor de paginas enteras. En el siguiente ejemplo, se aplica PageCache a la acción 'index' para generar una cache de la pagina entera durante 60 segundos como máximo o hasta que el contador @@ -287,14 +287,14 @@ public function behaviors() Por favor refiérase a [Caché de Páginas](caching-page.md) para obtener más detalles acerca de como usar PageCache. -### [[yii\filters\RateLimiter|RateLimiter]] +### [[yii\filters\RateLimiter|RateLimiter]] RateLimiter implementa un algoritmo de para limitar la tasa de descarga basándose en (leaky bucket algorithm)[http://en.wikipedia.org/wiki/Leaky_bucket]. Este se utiliza sobre todo en la implementación de APIs RESTful. Por favor, refiérase a la sección (limite de tasa)[rest-rate-limiting.md] para obtener más detalles acerca de el uso de este filtro. -### [[yii\filters\VerbFilter|VerbFilter]] +### [[yii\filters\VerbFilter|VerbFilter]] VerbFilter comprueba que los métodos de las peticiones HTTP estén permitidas para las acciones solicitadas. Si no están permitidas, lanzara una excepción de tipo HTTP 405. En el siguiente ejemplo, se declara VerbFilter para @@ -320,7 +320,7 @@ public function behaviors() } ``` -### [[yii\filters\Cors|Cors]] +### [[yii\filters\Cors|Cors]] (CORS)[https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS] es un mecanismo que permite a diferentes recursos (por ejemplo: fuentes, JavaScript, etc) de una pagina Web ser solicitados por otro dominio diferente al diff --git a/docs/guide-es/structure-models.md b/docs/guide-es/structure-models.md index 8185af8848a..0cd0c4c7bbe 100644 --- a/docs/guide-es/structure-models.md +++ b/docs/guide-es/structure-models.md @@ -22,7 +22,7 @@ La clase 'modelo' también es una base para modelos más avanzados, tales como [ componentes de Yii construidos para dar soporte a [[yii\base\Model]], por lo general, es la clase base preferible para un modelo. -### Atributos +### Atributos Los modelos representan los datos de negocio en términos de *atributos*. Cada atributos es como una propiedad públicamente accesible de un modelo. El método [[yii\base\Model::attributes()]] especifica qué atributos tiene la @@ -55,7 +55,7 @@ foreach ($model as $name => $value) { } ``` -### Definir Atributos +### Definir Atributos Por defecto, si un modelo extiende directamente a [[yii\base\Model]], todas sus variables miembro no estáticas son atributos. Por ejemplo, la siguiente clase modelo 'ContactForm' tiene cuatro atributos: 'name', 'email', 'subject', @@ -81,7 +81,7 @@ de las columnas de la tabla de la base de datos asociada como el nombre de sus a también puede necesitar sobrescribir los métodos mágicos como `__get()`, `__set()` de modo que se puede acceder a los atributos como a propiedades de objetos normales. -### Etiquetas de atributo +### Etiquetas de atributo Cuando se muestran valores o se obtienen entradas para atributos, normalmente se necesita mostrar etiquetas asociadas a los atributos. Por ejemplo, dado un atributo con nombre 'segundoApellido', es posible que se quiera mostrar la @@ -149,7 +149,7 @@ que se esta usando el modelo, se pueden devolver diferentes etiquetas para un mi > Información: Estrictamente hablando, los atributos son parte de las [vistas](structure-views.md). Pero declarar las etiquetas en los modelos, a menudo, es muy conveniente y puede generar a un código muy limpio y reutilizable. -## Escenarios +## Escenarios Un modelo puede usarse en diferentes *escenarios*. Por ejemplo, un modelo 'Usuario', puede ser utilizado para recoger entradas de inicio de sesión de usuarios, pero también puede usarse para generar usuarios. En diferentes escenarios, @@ -224,7 +224,7 @@ La característica escenario se usa principalmente en las [validaciones](#valida [asignación masiva de atributos](#massive-assignment). Aunque también se puede usar para otros propósitos. Por ejemplo, se pueden declarar [etiquetas de atributo](#attribute-labels) diferentes basándose en el escenario actual. -## Reglas de Validación +## Reglas de Validación Cuando un modelo recibe datos del usuario final, estos deben ser validados para asegurar que cumplan ciertas reglas (llamadas *reglas de validación*, también conocidas como *reglas de negocio*). Por ejemplo, dado un modelo @@ -294,7 +294,7 @@ Si no se especifica la propiedad 'on', la regla se aplicará en todos los escena Un atributo será validado si y sólo si es un atributo activo declarado en 'scenarios()' y esta asociado con una o más reglas activas declaradas en 'rules()'. -## Asignación Masiva +## Asignación Masiva La asignación masiva es una buena forma de rellenar los atributos de un modelo con las entradas de usuario en una única línea de código. Rellena los atributos de un modelo asignando los datos de entrada directamente a las @@ -316,7 +316,7 @@ $model->subject = isset($data['subject']) ? $data['subject'] : null; $model->body = isset($data['body']) ? $data['body'] : null; ``` -### Atributos Seguros +### Atributos Seguros La asignación masiva sólo se aplica a los llamados *atributos seguros* qué son los atributos listados en [[yii\base\Model::scenarios()]] para el actual [[yii\base\Model::scenario|scenario]] del modelo. Por ejemplo, si en el @@ -355,7 +355,7 @@ public function rules() } ``` -### Atributos Inseguros +### Atributos Inseguros Como se ha descrito anteriormente, el método [[yii\base\Model::scenarios()]] sirve para dos propósitos: determinar qué atributos deben ser validados y determinar qué atributos son seguros. En situaciones poco comunes, se puede querer @@ -379,7 +379,7 @@ que hacer explícitamente como en el ejemplo: $model->secret = $secret; ``` -## Exportación de Datos +## Exportación de Datos A menudo necesitamos exportar modelos a diferentes formatos. Por ejemplo, se puede querer convertir un conjunto de modelos a formato JSON o Excel. El proceso de exportación se puede dividir en dos pasos independientes. En el primer @@ -403,7 +403,7 @@ elementos de datos, llamados *campos*, queremos poner en el array resultante y e hecho, es la manera por defecto de exportar modelos en desarrollo de servicios Web RESTful, tal y como se describe en [Formatos de Respuesta](rest-response-formatting.md). -### Campos +### Campos Un campo es simplemente un elemento nombrado en el array resultante de ejecutar el método [[yii\base\Model::toArray()]] de un modelo. @@ -464,7 +464,7 @@ examinar los datos para asegurar que no contienen información sensible. Si exis sobrescribir 'fields()' para filtrarla. En el anterior ejemplo, se filtra 'aut_key', 'password_hash' y 'password_reset_token'. -## Mejores Prácticas +## Mejores Prácticas Los modelos son los lugares centrales para representar datos de negocio, reglas y lógica. Estos a menudo necesitan ser reutilizados en diferentes lugares. En una aplicación bien diseñada, los modelos normalmente son más grandes que los diff --git a/docs/guide-es/structure-modules.md b/docs/guide-es/structure-modules.md index 69066b3503d..9d191d6676e 100644 --- a/docs/guide-es/structure-modules.md +++ b/docs/guide-es/structure-modules.md @@ -7,7 +7,7 @@ finales pueden acceder a los controladores de un módulo cuando éste está inst mini-aplicaciones. Los módulos difieren de las [aplicaciones](structure-applications.md) en que los módulos no pueden ser desplegados solos y tienen que residir dentro de aplicaciones. -## Creación de Módulos +## Creación de Módulos Un módulo está organizado de tal manera que contiene un directorio llamado [[yii\base\Module::basePath|base path]] del módulo. Dentro de este directorio, hay subdirectorios tales como 'controllers', 'models', 'views', que contienen @@ -26,7 +26,7 @@ forum/ index.php archivo de vista del index ``` -### Clases Módulo +### Clases Módulo Cada módulo debe tener una única clase módulo que extiende a [[yii\base\Module]]. La clase debe encontrarse directamente debajo del [[yii\base\Module::basePath|base path]] y debe ser [autocargable](concept-autoloading.md). @@ -78,7 +78,7 @@ return [ ]; ``` -### Controladores en Módulos +### Controladores en Módulos Cuando se crean controladores en un modelo, una convención es poner las clases controlador debajo del sub-espacio de nombres de ‘controllers’ del espacio de nombres de la clase módulo. Esto también significa que los archivos de la @@ -102,7 +102,7 @@ Se puede personalizar el espacio de nombres de las clases controlador configuran nombres, se puede hacer accesible configurando la propiedad [[yii\base\Module::controllerMap]], similar a [como se hace en una aplicación](structure-applications.md#controller-map). -### Vistas en Módulos +### Vistas en Módulos Las vistas en un módulo deben alojarse en el directorio ‘views’ dentro del módulo del [[yii\base\Module::basePath|base path]]. Las vistas renderizadas por un controlador en el módulo, deben alojarse en el @@ -115,7 +115,7 @@ controladores del módulo. El layout debe alojarse en el directorio ‘views/lay la propiedad [[yii\base\Module::layout]] para apuntar al nombre del layout. Si no se configura la propiedad ‘layout’, se usar el layout de la aplicación. -## Uso de los Módulos +## Uso de los Módulos Para usar un módulo en una aplicación, simplemente se tiene que configurar la aplicación añadiendo el módulo en la propiedad [[yii\base\Application::modules|modules]] de la aplicación. El siguiente ejemplo de la @@ -136,7 +136,7 @@ La propiedad [[yii\base\Application::modules|modules]] contiene un array de conf array representa un *ID de módulo* que identifica de forma única el módulo de entre todos los módulos de la aplicación, y el correspondiente valor del array es la [configuración](concept-configurations.md) para crear el módulo. -### Rutas +### Rutas De Igual manera que el acceso a los controladores en una aplicación, las [rutas](structure-controllers.md#routes) se utiliza para dirigirse a los controladores en un módulo. Una ruta para un controlador dentro de un módulo debe empezar @@ -146,7 +146,7 @@ módulo. Si la ruta sólo contiene el ID del módulo, entonces la propiedad [[yi defecto es ‘default’, determinara que controlador/acción debe usarse. Esto significa que la ruta ‘forum’ representaría el controlador ‘default’ en el módulo ‘forum’. -### Acceder a los Módulos +### Acceder a los Módulos Dentro de un módulo, se puede necesitar obtener la instancia de la [clase módulo](#module-classes) para poder acceder al ID del módulo, componentes del módulo, etc. Se puede hacer usando la siguiente declaración: @@ -185,7 +185,7 @@ ejemplo: $maxPostCount = $module->params['maxPostCount']; ``` -### Bootstrapping Módulos +### Bootstrapping Módulos Puede darse el caso en que necesitemos que un módulo se ejecute en cada petición. El módulo [[yii\debug\Module|debug]] es un ejemplo. Para hacerlo, tenemos que listar los IDs de los módulos en la propiedad @@ -205,7 +205,7 @@ Por ejemplo, la siguiente configuración de aplicación se asegura de que el mó ] ``` -## Módulos anidados +## Módulos anidados Los módulos pueden ser anidados sin límite de niveles. Es decir, un módulo puede contener un módulo y éste a la vez contener otro módulo. Nombramos *padre* al primero mientras que al segundo lo nombramos *hijo*. Los módulos hijo se @@ -238,7 +238,7 @@ ejemplo, la ruta ‘forum/admin/dashboard/index’ representa la acción ‘inde directamente a su padre. La propiedad [[yii\base\Application::loadedModules]] contiene una lista de los módulos cargados, incluyendo los hijos directos y los anidados, indexados por sus nombres de clase. -## Mejores Prácticas +## Mejores Prácticas Es mejor usar los módulos en grandes aplicaciones en las que sus funcionalidades puedan ser divididas en diferentes grupos, cada uno compuesto por funcionalidades directamente relacionadas. Cada grupo de funcionalidades se puede diff --git a/docs/guide-es/structure-views.md b/docs/guide-es/structure-views.md index 83dd2e57810..6d2ee005985 100644 --- a/docs/guide-es/structure-views.md +++ b/docs/guide-es/structure-views.md @@ -6,7 +6,7 @@ Estas son el código responsable de presentar los datos al usuario final. En una Son manejadas por el componente de la aplicación [[yii\web\View|view]], el cual provee métodos comúnmente utilizados para facilitar la composición y el renderizado de las mismas. Por simplicidad, a menudo las llamamos *templates* o *archivos de templates*. -## Creando Vistas +## Creando Vistas Como fue mencionado, una vista es simplemente un archivo PHP que mezcla código PHP y HTML. La siguiente es una vista que muestra un formulario de login. Como puedes ver, el código PHP utilizado es para generar contenido dinámico, como el título de la página y el formulario mismo, mientras que el código HTML organiza estos elementos en una página HTML mostrable. @@ -39,7 +39,7 @@ Además de `$this`, puede haber otras variables predefinidas en una vista, como > Tip: La lista de variables predefinidas están listadas en un bloque de comentario al principio de la vista así pueden ser reconocidas por las IDEs. Esto es también una buena manera de documentar tus propias vistas. -### Seguridad +### Seguridad Al crear vistas que generan páginas HTML, es importante que codifiques (encode) y/o filtres los datos provenientes de los usuarios antes de mostrarlos. De otro modo, tu aplicación puede estar expuesta a ataques tipo [cross-site scripting](http://es.wikipedia.org/wiki/Cross-site_scripting). @@ -70,7 +70,7 @@ use yii\helpers\HtmlPurifier; > Tip: Aunque HTMLPurifier hace un excelente trabajo al hacer la salida más segura, no es rápido. Deberías considerar utilizar [caching](caching-overview.md) al resultado de aplicar el filtro si tu aplicación requiere un gran desempeño (performance). -### Organizando Vistas +### Organizando Vistas Así como en [controladores](structure-controllers.md) y [modelos](structure-models.md), existen convenciones para organizar las vistas. @@ -81,7 +81,7 @@ Así como en [controladores](structure-controllers.md) y [modelos](structure-mod Puedes personalizar estos directorios por defecto sobrescribiendo el método [[yii\base\ViewContextInterface::getViewPath()]] en el controlador o widget necesario. -## Renderizando Vistas +## Renderizando Vistas Puedes renderizar vistas desde [controllers](structure-controllers.md), [widgets](structure-widgets.md), o cualquier otro lugar llamando a los métodos de renderización de vistas. Estos métodos comparten una firma similar, como se muestra a continuación: @@ -95,7 +95,7 @@ methodName($view, $params = []) ``` -### Renderizando en Controladores +### Renderizando en Controladores Dentro de los [controladores](structure-controllers.md), puedes llamar al siguiente método del controlador para renderizar una vista: @@ -132,7 +132,7 @@ class PostController extends Controller ``` -### Renderizando en Widgets +### Renderizando en Widgets Dentro de [widgets](structure-widgets.md), puedes llamar a cualquier de los siguientes métodos de widget para renderizar una vista. @@ -162,7 +162,7 @@ class ListWidget extends Widget ``` -### Renderizando en Vistas +### Renderizando en Vistas Puedes renderizar una vista dentro de otra vista llamando a algunos de los siguientes métodos provistos por el [[yii\base\View|componente view]]: @@ -177,7 +177,7 @@ Por ejemplo, el siguiente código en una vista renderiza el template `_overview. ``` -### Renderizando en Otros Lugares +### Renderizando en Otros Lugares En cualquier lugar, puedes tener acceso al componente [[yii\base\View|view]] utilizando la expresión `Yii::$app->view` y entonces llamar a los métodos previamente mencionados para renderizar una vista. Por ejemplo: @@ -188,7 +188,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); ``` -### Vistas Nombradas +### Vistas Nombradas Cuando renderizas una vista, puedes especificar el template utilizando tanto el nombre de la vista o la ruta/alias al archivo. En la mayoría de los casos, utilizarías la primera porque es más concisa y flexible. *Vistas nombradas* son vistas especificadas mediante un nombre en vez de una ruta al archivo o alias. @@ -204,7 +204,7 @@ Por ejemplo, `//site/about` será resuelto como `@app/views/site/about.php`. De acuerdo a las reglas mencionadas, al llamar a `$this->render('view')` en el controlador `app\controllers\PostController` se renderizará el template `@app/views/post/view.php`, mientras que llamando a `$this->render('_overview')` en la vista renderizará el template `@app/views/post/_overview.php`. -### Accediendo a Datos en la Vista +### Accediendo a Datos en la Vista Hay dos modos posibles de acceder a los datos en la vista: push (inyectar) y pull (traer). @@ -226,7 +226,7 @@ El ID del controlador es: context->id ?> Para acceder a datos en la vista, normalmente se prefiere el modo push, ya que hace a la vista menos dependiente de los objetos del contexto. La contra es que tienes que construir el array manualmente cada vez, lo que podría volverse tedioso y propenso al error si la misma vista es compartida y renderizada desde diferentes lugares. -### Compartiendo Datos Entre las Vistas +### Compartiendo Datos Entre las Vistas El [[yii\base\View|componente view]] provee la propiedad [[yii\base\View::params|params]] para que puedas compartir datos entre diferentes vistas. @@ -245,12 +245,12 @@ Entonces, en el archivo del [layout](#layouts), que es también una vista, puede ``` -## Layouts +## Layouts Los layouts son un tipo especial de vista que representan partes comunes de otras múltiples vistas. Por ejemplo, las páginas de la mayoría de las aplicaciones Web comparten el mismo encabezado y pie de página. Aunque puedes repetirlos en todas y cada una de las vistas, una mejor forma es hacerlo sólo en el layout e incrustar el resultado de la renderización de la vista en un lugar apropiado del mismo. -### Creando Layouts +### Creando Layouts Dado que los layouts son también vistas, pueden ser creados de manera similar a las vistas comunes. Por defecto, los layouts son guardados en el directorio `@app/views/layouts`. Para layouts utilizados dentro de un [módulo](structure-modules.md), deberían ser guardados en el directorio `views/layouts` bajo el [[yii\base\Module::basePath|directorio del módulo]]. Puedes personalizar el directorio de layouts por defecto configurando la propiedad [[yii\base\Module::layoutPath]] de la aplicación o módulos. @@ -294,14 +294,14 @@ La mayoría de layouts deberían llamar a los siguientes métodos (como fue most - [[yii\base\View::endBody()|endBody()]]: Este método debería llamarse al final de la sección ``. Esto dispara el evento [[yii\web\View::EVENT_END_BODY|EVENT_END_BODY]], que genera un espacio vacío a ser reemplazado por el código HTML registrado (ej. JavaScript) que apunta al final del body. -### Accediendo a Datos en Layouts +### Accediendo a Datos en Layouts Dentro de un layout, tienes acceso a dos variables predefinidas: `$this` y `$content`. La primera se refiere al componente [[yii\base\View|view]], como en cualquier vista, mientras que la última contiene el resultado de la renderización del contenido de la vista que está siendo renderizada all llamar al método [[yii\base\Controller::render()|render()]] en los controladores. Si quieres acceder a otros datos en los layouts, debes utilizar el modo pull que fue descrito en la sub-sección [Accediendo a Datos en la Vista](#accessing-data-in-views). Si quieres pasar datos desde al contenido de la vista a un layout, puedes utilizar el método descrito en la sub-sección [Compartiendo Datos Entre las Vistas](#sharing-data-among-views). -### Utilizando Layouts +### Utilizando Layouts Como se describe en la sub-sección [Renderizando en Controllers](#rendering-in-controllers), cuando renderizas una vista llamando al método [[yii\base\Controller::render()|render()]] en un controlador, al resultado de dicha renderización le será aplicado un layout. Por defecto, el layout `@app/views/layouts/main.php` será el utilizado. @@ -339,7 +339,7 @@ En el segundo paso, se determina el archivo de layout actual de acuerdo al valor Si el valor de layout no contiene una extensión de tipo de archivo, utilizará por defecto `.php`. -### Layouts Anidados +### Layouts Anidados A veces podrías querer anidar un layout dentro de otro. Por ejemplo, en diferentes secciones de un sitio Web, podrías querer utilizar layouts diferentes, mientras que todos esos layouts comparten el mismo layout básico que genera la estructura general de la página en HTML5. Esto es posible llamando a los métodos [[yii\base\View::beginContent()|beginContent()]] y [[yii\base\View::endContent()|endContent()]] en los layouts hijos como se muestra a continuación: @@ -356,7 +356,7 @@ Como se acaba de mostrar, el contenido del layout hijo debe ser encerrado dentro Utilizando la forma recién mencionada, puedes anidar layouts en más de un nivel. -## Utilizando Componentes de Vista +## Utilizando Componentes de Vista Los [[yii\base\View|componentes de vista]] proveen características relacionadas a las vistas. Aunque puedes obtener componentes de vista creando instancias individuales de [[yii\base\View]] o sus clases hijas, en la mayoría de los casos utilizarías el componente `view` del a aplicación. Puedes configurar este componente en la [configuración de la aplicación](structure-applications.md#application-configurations) como a continuación: @@ -384,7 +384,7 @@ Los componentes de vista proveen las siguientes características útiles, cada u Puedes también utilizar frecuentemente el siguiente menor pero útil grupo de características al desarrollar páginas Web. -### Definiendo Títulos de Página +### Definiendo Títulos de Página Toda página Web debería tener un título. Normalmente el tag de título es generado en [layout](#layouts). De todos modos, en la práctica el título es determinado en el contenido de las vistas más que en layouts. Para resolver este problema, [[yii\web\View]] provee la propiedad [[yii\web\View::title|title]] para que puedas pasar información del título desde el contenido de la vista a los layouts. @@ -403,7 +403,7 @@ Entonces en el layout, asegúrate de tener el siguiente código en la sección ` ``` -### Registrando Meta Tags +### Registrando Meta Tags Las páginas Web usualmente necesitan generar varios meta tags necesarios por diferentes grupos (ej. Facebook, motores de búsqueda, etc). Cómo los títulos de página, los meta tags aparecen en la sección `` y son usualmente generado en los layouts. @@ -431,7 +431,7 @@ $this->registerMetaTag(['name' => 'description', 'content' => 'Este sitio Web es ``` -### Registrando Link Tags +### Registrando Link Tags Tal como los [meta tags](#adding-meta-tags), los link tags son útiles en muchos casos, como personalizar el ícono (favicon) del sitio, apuntar a una fuente de RSS o delegar OpenID a otro servidor. Puedes trabajar con link tags, al igual que con meta tags, utilizando [[yii\web\View::registerLinkTag()]]. Por ejemplo, en el contenido de una vista, puedes registrar un link tag como se muestra a continuación: @@ -453,7 +453,7 @@ El resultado del código es el siguiente: Al igual que con [[yii\web\View::registerMetaTag()|registerMetaTags()]], puedes especificar una clave al llamar a [[yii\web\View::registerLinkTag()|registerLinkTag()]] para evitar registrar link tags repetidos. -## Eventos de Vistas +## Eventos de Vistas Los [[yii\base\View|componentes de vistas]] disparan varios eventos durante el proceso de renderizado de la vista. Puedes responder a estos eventos para inyectar contenido a la vista o procesar el resultado de la renderización antes de que sea enviada al usuario final. @@ -474,7 +474,7 @@ Por ejemplo, el siguiente código inyecta la fecha actual al final del body de l ``` -## Renderizando Páginas Estáticas +## Renderizando Páginas Estáticas Con páginas estáticas nos referimos a esas páginas cuyo contenido es mayormente estático y sin necesidad de acceso a datos dinámicos enviados desde los controladores. @@ -516,7 +516,7 @@ http://localhost/index.php?r=site/page&view=about El parámetro `GET` `view` le comunica a [[yii\web\ViewAction]] cuál es la vista solicitada. La acción entonces buscará esta vista dentro de `@app/views/site/pages`. Puedes configurar la propiedad [[yii\web\ViewAction::viewPrefix]] para cambiar el directorio en el que se buscarán dichas páginas. -## Buenas Prácticas +## Buenas Prácticas Las vistas son responsables de la presentación de modelos en el formato que el usuario final desea. En general, las vistas diff --git a/docs/guide-es/structure-widgets.md b/docs/guide-es/structure-widgets.md index e48c983309c..fdf78303a8f 100644 --- a/docs/guide-es/structure-widgets.md +++ b/docs/guide-es/structure-widgets.md @@ -18,7 +18,7 @@ Hay un buen número de widgets incluidos en Yii, tales como [[yii\widgets\Active En adelante, introduciremos las nociones básicas acerca de los widgets. Por favor, refiérase a la documentación de la API de clases si quiere aprender más acerca de el uso de un widget en particular. -## Uso de los Widgets +## Uso de los Widgets Los Widgets son usados principalmente en las [vistas](structure-views.md). Se puede llamar al método [[yii\base\Widget::widget()]] para usar un widget en una vista. El método obtiene un array de @@ -69,7 +69,7 @@ Hay que tener en cuenta que a diferencia de [[yii\base\Widget::widget()]] que de del widget, el método [[yii\base\Widget::begin()]] devuelve una instancia del widget que se puede usar para generar el contenido del widget. -## Creación Widgets +## Creación Widgets Para crear un widget, se debe extender a [[yii\base\Widget]] y sobrescribir los métodos [[yii\base\Widget::init()]] y/o [[yii\base\Widget::run()]]. Normalmente el método 'init()' debería contener el código que estandariza las @@ -176,7 +176,7 @@ ejemplo representará el fichero de la vista `@app/components/views/hello.php`, encuentre en `@app/components`. Se puede sobrescribir el método [[yii\base\Widget::getViewPath()]] para personalizar el directorio que contenga los ficheros de la vista del widget. -## Mejores Prácticas +## Mejores Prácticas Los widgets son una manera orientada a objetos de reutilizar código de las vistas. diff --git a/docs/guide-es/tutorial-core-validators.md b/docs/guide-es/tutorial-core-validators.md index b67c545c87a..740a7f70629 100644 --- a/docs/guide-es/tutorial-core-validators.md +++ b/docs/guide-es/tutorial-core-validators.md @@ -18,7 +18,7 @@ La propiedad [[yii\validators\Validator::builtInValidators]] declara todos los a A continuación, vamos a describir el uso principal y las propiedades de cada validador del núcleo. -## [[yii\validators\BooleanValidator|boolean]] +## [[yii\validators\BooleanValidator|boolean]] ```php [ @@ -40,7 +40,7 @@ Este validador comprueba si el valor de la entrada (input) es booleano. > Nota: Ya que los datos enviados con la entrada, vía formularios HTML,son todos cadenas (strings), usted debe normalmente dejar la propiedad [[yii\validators\BooleanValidator::strict|strict]] a false. -## [[yii\captcha\CaptchaValidator|captcha]] +## [[yii\captcha\CaptchaValidator|captcha]] ```php [ @@ -56,7 +56,7 @@ Este validador es usualmente usado junto con [[yii\captcha\CaptchaAction]] y [[y - `skipOnEmpty`: cuando la validación puede saltarse si la entrada está vacía. Por defecto a false, lo caul permite que la entrada sea necesaria (required). -## [[yii\validators\CompareValidator|compare]] +## [[yii\validators\CompareValidator|compare]] ```php [ @@ -83,7 +83,7 @@ Este validador compara el valor especificado por la entrada con otro valor y, se * `<=`: comprueba si el valor siendo validado es menor o igual que el valor con el que se compara -## [[yii\validators\DateValidator|date]] +## [[yii\validators\DateValidator|date]] ```php [ @@ -101,7 +101,7 @@ Opcionalmente, puede convertir el valor de entrada en una fecha/tiempo UNIX y al - `timestampAttribute`: el nombre del atributo al cual este validador puede asignar el fecha/hora UNIX convertida desde la entrada fecha/hora. -## [[yii\validators\DefaultValueValidator|default]] +## [[yii\validators\DefaultValueValidator|default]] ```php [ @@ -132,7 +132,7 @@ function foo($model, $attribute) { > Info: Cómo determinar si un valor está vacío o no, es un tópico separado cubierto en la sección [Valores Vacíos](input-validation.md#handling-empty-inputs) . -## [[yii\validators\NumberValidator|double]] +## [[yii\validators\NumberValidator|double]] ```php [ @@ -147,7 +147,7 @@ Esta validador comprueba si el valor de entrada es un número de tipo doble. Es - `min`: el valor límite inferior (incluido) de el valor. Si no tiene valor, significa que no se comprueba el valor inferior. -## [[yii\validators\EmailValidator|email]] +## [[yii\validators\EmailValidator|email]] ```php [ @@ -166,7 +166,7 @@ Este validador comprueba si el valor de entrada es una dirección válida de ema Por defecto a false. Dese cuenta que para poder usar la validación de IDN has de instalar y activar la extensión de PHP `intl`, o será lanzada una excepción. -## [[yii\validators\ExistValidator|exist]] +## [[yii\validators\ExistValidator|exist]] ```php [ @@ -200,7 +200,7 @@ Este validador comprueba si el valor de entrada puede ser encontrado en una colu - `allowArray`: indica cuando permitir que el valor de entrada sea un array. Por defecto a false.Si la propiedad es true y la entrada es un array, cada elemento del array debe existir en la columna destino. Nota que esta propiedad no puede ser true si estás validando, por el contrario, múltiple columnas poniendo el valor del atributo `targetAttribute` como que es un array. -## [[yii\validators\FileValidator|file]] +## [[yii\validators\FileValidator|file]] ```php [ @@ -224,7 +224,7 @@ Este validador comprueba que el fichero subido es el adecuado. `FileValidator` es usado con [[yii\web\UploadedFile]]. Por favor, refiérase a la sección [Subida de ficheros](input-file-upload.md) para una completa cobertura sobre la subida de ficheros y llevar a cabo la validación de los ficheros subidos. -## [[yii\validators\FilterValidator|filter]] +## [[yii\validators\FilterValidator|filter]] ```php [ @@ -249,7 +249,7 @@ Este validador no valida datos. En su lugar, aplica un filtro sobre el valor de > Consejo (Tip): Si quieres recortar los valores de entrada, puedes usar directamente el validador [Recorte (trim)](#trim). -## [[yii\validators\ImageValidator|image]] +## [[yii\validators\ImageValidator|image]] ```php [ @@ -269,7 +269,7 @@ Este validador comprueba si el valor de entrada representa un fichero de imagen - `maxHeight`: el máximo alto de la imagen. Por defecto a null, indicando que no hay límite superior. -## [[yii\validators\RangeValidator|in]] +## [[yii\validators\RangeValidator|in]] ```php [ @@ -286,7 +286,7 @@ Este validador comprueba si el valor de entrada puede encontrarse entre determin - `allowArray`: si se permite que el valor de entrada sea un array. Cuando es true y el valor de entrada es un array, cada elemento en el array debe de ser encontrado en la lista de valores determinada,o la validación fallará. -## [[yii\validators\NumberValidator|integer]] +## [[yii\validators\NumberValidator|integer]] ```php [ @@ -301,7 +301,7 @@ Esta validador comprueba si el valor de entrada es un entero. - `min`: el valor inferior (incluido). Si no tiene valor, significa que el validador no comprueba el límite inferior. -## [[yii\validators\RegularExpressionValidator|match]] +## [[yii\validators\RegularExpressionValidator|match]] ```php [ @@ -316,7 +316,7 @@ Este validador comprueba si el valor de entrada coincide con la expresión regul - `not`: indica cuando invertir el resultado de la validación. Por defecto a false, significando que la validación es exitosa solamente si el valor de entrada coincide con el patrón. Si esta propiedad está a true, la validación es exitosa solamente si el valor de entrada NO coincide con el patrón. -## [[yii\validators\NumberValidator|number]] +## [[yii\validators\NumberValidator|number]] ```php [ @@ -331,7 +331,7 @@ Este validador comprueba si el valor de entrada es un número. Es equivalente al - `min`: el valor inferior límite (incluido) . Si no tiene valor, significa que el validador no comprueba el valor límite inferior. -## [[yii\validators\RequiredValidator|required]] +## [[yii\validators\RequiredValidator|required]] ```php [ @@ -350,7 +350,7 @@ El validador comprueba si el valor de entrada es provisto y no está vacío. > Info: Como determinar si un valor está vacío o no es un tópico separado cubierto en la sección [Valores vacíos](input-validation.md#handling-empty-inputs). -## [[yii\validators\SafeValidator|safe]] +## [[yii\validators\SafeValidator|safe]] ```php [ @@ -362,7 +362,7 @@ El validador comprueba si el valor de entrada es provisto y no está vacío. Este validador no realiza validación de datos. En lugar de ello, es usado para marcar un atributo como seguro [atributos seguros](structure-models.md#safe-attributes). -## [[yii\validators\StringValidator|string]] +## [[yii\validators\StringValidator|string]] ```php [ @@ -383,7 +383,7 @@ Este validador comprueba si el valor de entrada es una cadena válida con determ - `encoding`: la codificación de la cadena de entrada a ser validada. Si no tiene valor, usará el valor de la aplicación [[yii\base\Application::charset|charset]] que por defecto es `UTF-8`. -## [[yii\validators\FilterValidator|trim]] +## [[yii\validators\FilterValidator|trim]] ```php [ @@ -395,7 +395,7 @@ Este validador comprueba si el valor de entrada es una cadena válida con determ Este validador no realiza validación de datos. En cambio, recorta los espacios que rodean el valor de entrada. Nota que si el valor de entrada es un array, se ignorará este validador. -## [[yii\validators\UniqueValidator|unique]] +## [[yii\validators\UniqueValidator|unique]] ```php [ @@ -425,7 +425,7 @@ Este validador comprueba si el valor de entrada es único en una columna de una Esto puede ser una cadena o un array representando la condición adicional a la consulta (Referirse a [[yii\db\Query::where()]] para el formato de la condición de la consulta), o una función anónima de la forma `function ($query)`, donde `$query` es el objeto [[yii\db\Query|Query]] que puedes modificar en la función. -## [[yii\validators\UrlValidator|url]] +## [[yii\validators\UrlValidator|url]] ```php [ diff --git a/docs/guide-es/tutorial-yii-integration.md b/docs/guide-es/tutorial-yii-integration.md index 9cb2ddae037..a5864854a37 100644 --- a/docs/guide-es/tutorial-yii-integration.md +++ b/docs/guide-es/tutorial-yii-integration.md @@ -4,12 +4,12 @@ Trabajando con código de terceros De tiempo en tiempo, puede necesitar usar algún código de terceros en sus aplicaciones Yii. O puedes querer usar Yii como una librería en otros sistemas de terceros. En esta sección, te enseñaremos cómo conseguir estos objetivos. -## Usando librerías de terceros en Yii +## Usando librerías de terceros en Yii Para usar una librería en una aplicación Yii, primeramente debes de asegurarte que las clases een la librería son incluidas adecuadamente o pueden ser cargadas de forma automática. -### Usando Paquetes de Composer +### Usando Paquetes de Composer Muchas librerías de terceros son liberadas en términos de paquetes [Composer](https://getcomposer.org/). Puedes instalar este tipo de librerias siguiendo dos sencillos pasos: @@ -28,7 +28,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` -### Usando librerías Descargadas +### Usando librerías Descargadas Si la librería no es liberada como un paquete de Composer, debes de seguir sus instrucciones de instalación para instalarla. En muchos casos, puedes necesitar descargar manualmente el fichero de la versión y desempaquetarlo en el directorio `BasePath/vendor` , donde `BasePath` representa el [camino base (base path)](structure-applications.md#basePath) de tu aplicación. @@ -57,7 +57,7 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php'; ``` -## Usando Yii en Sistemas de Terceros +## Usando Yii en Sistemas de Terceros Debido a que Yii provee muchas posibilidades excelentes, a veces puedes querer usar alguna de sus características para permitir el desarrollo o mejora de sistemas de terceros, como es WordPress, Joomla, o aplicaciones desarrolladas usando otros frameworks de PHP. Por ejemplo, puedes queres usar la clase [[yii\helpers\ArrayHelper]] o usar la característica [Active Record](db-active-record.md) en un sistema de terceros. Para lograr este objetivo, principalmente necesitas realizar dos pasos: instalar Yii , e iniciar Yii. @@ -86,7 +86,7 @@ Como en una aplicación Yii, debes configurar la instancia de la aplicación bas Ahora puedes usar muchas características provistas por Yii. Por ejemplo, puedes crear clases Active Record y usarlas para trabajar con bases de datos. -## Usando Yii 2 con Yii 1 +## Usando Yii 2 con Yii 1 Si estaba usando Yii 1 previamente, es como si tuvieras una aplicación Yii 1 funcionando. En vez de reescribir toda la aplicación en Yii 2, puedes solamente mejorarla usando alguna de las características sólo disponibles en Yii 2. diff --git a/docs/guide-fr/start-databases.md b/docs/guide-fr/start-databases.md index 179b40901f1..6be96986bfa 100644 --- a/docs/guide-fr/start-databases.md +++ b/docs/guide-fr/start-databases.md @@ -18,7 +18,7 @@ En particulier, vous devez savoir créer une base de données, et exécuter des gestion de bases de données. -Préparer la Base de Données +Préparer la Base de Données -------------------- Pour commencer, créez une base de données appelée `yii2basic`, depuis laquelle vous irez chercher les données dans @@ -50,7 +50,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); A ce niveau, vous avez une base de données appelée `yii2basic`, et dedans, une table `country` comportant trois colonnes, contenant dix lignes de données. -Configurer une Connexion à la BDD +Configurer une Connexion à la BDD --------------------------- Avant de continuer, assurons nous que vous avez installé à la fois l'extension PHP @@ -85,7 +85,7 @@ On peut accéder à connexion à la BDD configurée ci-dessus depuis le code de Pour plus d'informations, merci de vous référer à la section [Configurations](concept-configurations.md). -Créer un Active Record +Créer un Active Record ------------------------- Pour représenter et aller chercher des données dans la table `country`, créez une classe dérivée d'[Active Record](db-active-record.md) appelée `Country`, et enregistrez la dans le fichier `models/Country.php`. @@ -132,7 +132,7 @@ Vous pouvez trouver plus d'informations dans la section [Active Record](db-activ [Data Access Objects](db-dao.md). -Créer une Action +Créer une Action ------------------ Pour exposer les données pays aux utilisateurs, vous devez créer une action. Plutôt que de placer la nouvelle action @@ -188,7 +188,7 @@ Pour limiter le nombre de pays retournés par chaque requête, la requête est p A la fin du code, l'action `index` effectue le rendu d'une vue nommée `index`, et lui transmet les données pays ainsi que les informations de pagination. -Créer une Vue +Créer une Vue --------------- Dans le dossier `views`, commencez par créer un sous-dossier nommé `country`. Ce dossier sera utilisé pour contenir @@ -219,7 +219,7 @@ Dans la deuxième partie, un widget [[yii\widgets\LinkPager]] est rendu en utili Le widget `LinkPager` affiche une liste de boutons de pages. Le fait de cliquer sur l'un deux rafraichit les données pays dans la page correspondante. -Essayer +Essayer ------------- Pour voir comment tout le code ci-dessus fonctionne, utilisez votre navigateur pour accéder à l'URL suivant : @@ -253,7 +253,7 @@ En coulisse, [[yii\data\Pagination|Pagination]] fournit toutes les fonctionnalit affichés. -Résumé +Résumé ------- Dans cette section, vous avez appris comment travailler avec une base de données. Vous avez également appris comment diff --git a/docs/guide-fr/start-forms.md b/docs/guide-fr/start-forms.md index 383e1e52797..f834f2c99dc 100644 --- a/docs/guide-fr/start-forms.md +++ b/docs/guide-fr/start-forms.md @@ -17,7 +17,7 @@ formulaire * Construire un formulaire HTML dans une [vue](structure-views.md) -Créer un Modèle +Créer un Modèle ---------------- Les données demandées à l'utilisateur seront représentées par une classe de modèle `EntryForm` comme montrée ci-dessous @@ -81,7 +81,7 @@ if ($model->validate()) { ``` -Créer une Action +Créer une Action ------------------ Maintenant, vous allez créer une action `entry` dans le contrôleur `site` qui utilisera le nouveau modèle. Le processus @@ -138,7 +138,7 @@ valides. En pratique, vous devriez envisager d'utiliser [[yii\web\Controller::re [problèmes de multiple soumission de formulaire](http://fr.wikipedia.org/wiki/Post-Redirect-Get). -Créer des Vues +Créer des Vues -------------- Enfin, créez deux fichiers de vue nommés `entry-confirm` et `entry`. Ceux-ci seront rendus par l'action `entry`, @@ -187,7 +187,7 @@ donnée "email". Après les champs de saisie, la méthode [[yii\helpers\Html::su bouton de soumission. -Essayer +Essayer ------------- Pour voir comment ça fonctionne, utilisez votre navigateur pour accéder à l'URL suivante : @@ -210,7 +210,7 @@ page affichant les données que vous venez de saisir. -### La Magie expliquée +### La Magie expliquée Vous vous demandez peut-être comment le formulaire HTML fonctionne en coulisse, parce qu'il semble presque magique qu'il puisse afficher une étiquette pour chaque champ de saisie et afficher sans rafraichir la page des messages @@ -241,7 +241,7 @@ Vous pouvez personnaliser une étiquette dans une vue en employant le code suiva Comme vous l'apprendrez plus tard, écrire un widget et aussi extrêmement simple. Vous voudrez sans doute transformer une grande partie de votre code de vues en widgets réutilisables pour simplifier les développements de vues futurs. -Résumé +Résumé ------- Dans cette section du guide, vous avez touché toutes les parties du patron de conception MVC. Vous avez appris à créer diff --git a/docs/guide-fr/start-gii.md b/docs/guide-fr/start-gii.md index 80f1d6863df..7989174040b 100644 --- a/docs/guide-fr/start-gii.md +++ b/docs/guide-fr/start-gii.md @@ -13,7 +13,7 @@ Au long de ce tutoriel, vous apprendrez comment : * Personnaliser le code généré par Gii -Démarrer Gii +Démarrer Gii ------------ [Gii](tool-gii.md) est fourni dans Yii en tant que [module](structure-modules.md). Vous pouvez activer Gii en le @@ -60,7 +60,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -Générer une Classe Active Record +Générer une Classe Active Record --------------------------------- Pour utiliser Gii pour générer une classe Active Record, sélectionnez le "Model Generator" (en cliquant sur le lien @@ -85,7 +85,7 @@ Ensuite, vous verrez une page de confirmation indiquant que le code a été gén existant, vous verrez également un message indiquant qu’il a été écrasé par le code nouvellement généré. -Générer du Code CRUD +Générer du Code CRUD -------------------- CRUD signifie Create, Read, Update, and Delete (Créer, Lire, Mettre à Jour et Supprimer), représentant le quatre tâches @@ -108,7 +108,7 @@ Si vous aviez précédemment créé les fichiers `controllers/CountryController (Les versions précédentes n’avaient pas de fonctionnalités CRUD). -Essayer +Essayer ------------- Pour voir comment ça fonctionne, utilisez votre navigateur pour accéder à l’URL suivant : @@ -142,7 +142,7 @@ fonctionnalités sont implémentées, ou les personnaliser : à la section [Gii](tool-gii.md). -Résumé +Résumé ------- Dans cette section, vous avez appris à utiliser Gii pour générer le code qui implémente une fonctionnalité CRUD diff --git a/docs/guide-fr/start-hello.md b/docs/guide-fr/start-hello.md index b33a7160b21..10321f949fb 100644 --- a/docs/guide-fr/start-hello.md +++ b/docs/guide-fr/start-hello.md @@ -14,7 +14,7 @@ A travers ce tutoriel, vous apprendrez trois choses : 3. comment une application distribue les requêtes aux [actions](structure-controllers.md#creating-actions). -Créer une Action +Créer une Action ------------------ Pour la tâche "Hello", vous allez créer une [action](structure-controllers.md#creating-actions) `dire` qui reçoit un paramètre @@ -54,7 +54,7 @@ La méthode action de notre exemple prend un paramètre `$message`, dont la vale Au sein de la méthode action, [[yii\web\Controller::render()|render()]] est appelé pour effectuer le rendu d'un fichier [vue](structure-views.md) appelé `dire`. Le paramètre `message` est également transmis à la vue afin qu'il puisse y être utilisé. Le résultat du rendu est renvoyé à l'utilisateur par la méthode action. Ce résultat sera reçu par l'application et présenté à l'utilisateur dans le navigateur (en tant qu'élément d'une page HTML complète). -Créer une Vue +Créer une Vue --------------- Les [vues](structure-views.md) sont des scripts qu'on écrit pour générer le contenu d'une réponse. @@ -78,7 +78,7 @@ En réalité, la vue `dire` est simplement un script PHP exécuté par la métho Le contenu affiché par le script de vue sera renvoyé à l'application en tant que résultat de réponse. L'application renverra à son tour ce résultat à l'utilisateur. -Essayer +Essayer ------------- Après avoir créé l'action et la vue, vous pouvez accéder à la nouvelle page en accédant à l'URL suivant : @@ -105,7 +105,7 @@ sera comprise comme la classe contrôleur `SiteController` et l'action `dire`. I au nom de classe contrôleur `PosterCommentaireController`. -Résumé +Résumé ------- Dans cette section, vous avez touché aux parties contrôleur et vue du patron de conception MVC. diff --git a/docs/guide-fr/start-installation.md b/docs/guide-fr/start-installation.md index c004f47c09d..967522af7e4 100644 --- a/docs/guide-fr/start-installation.md +++ b/docs/guide-fr/start-installation.md @@ -7,7 +7,7 @@ La première méthode est conseillée, étant donné qu'elle permet d'installer > Remarque : Contrairement à Yii 1, les installations standards de Yii 2 auront pour résultat le téléchargement et l'installation du framework, ainsi que d'un squelette d'application. -Installer via Composer +Installer via Composer ---------------------- Si vous n'avez pas déjà installé Composer, vous pouvez le faire en suivant les instructions sur le site [getcomposer.org](https://getcomposer.org/download/). @@ -33,7 +33,7 @@ Cette commande installera Yii dans le dossier `basic`. > Notez que la version de développement de Yii ne doit pas être utilisée en production, vu qu'elle pourrait *casser* votre code existant. -Installer depuis une archive +Installer depuis une archive ---------------------------- Installer Yii depuis une archive se fait en deux étapes : @@ -42,7 +42,7 @@ Installer Yii depuis une archive se fait en deux étapes : 2. Décompressez l'archive dans un dossier accessible via le Web. -Autres options d'installation +Autres options d'installation ----------------------------- Les instructions d'installation ci-dessus montrent comment installer Yii, ce qui installe également une application Web de base qui fonctionne *out of the box*. @@ -54,7 +54,7 @@ Mais il y a d'autres options d'installation disponibles : * Si vous voulez commencer par une application plus sophistiquée, mieux adaptée aux environnements d'équipe de développement, vous pouvez envisager l'installation du [Modèle d'application avancée](tutorial-advanced-app.md). -Vérifier l'installation +Vérifier l'installation ----------------------- Après l'installation, vous pouvez utiliser votre navigateur pour accéder à l'application Yii avec l'URL suivante : @@ -80,7 +80,7 @@ Vous devriez voir dans votre navigateur la page ci-dessus. Sinon, merci de véri Vous devez configurer votre installation de PHP afin qu'elle réponde aux exigences minimales de Yii. Le plus important étant que vous ayez PHP 5.4 ou plus. Si votre application a besoin d'une base de données, vous devez également installer l'[extension PHP PDO](http://www.php.net/manual/en/pdo.installation.php) ainsi qu'un pilote correspondant à votre système de base de données (par exemple `pdo_mysql` pour MySQL). -Configuration du serveur Web +Configuration du serveur Web ---------------------------- > Remarque : Si vous voulez juste tester Yii sans intention de l'utiliser sur un serveur de production, vous pouvez ignorer ce paragraphe. @@ -95,7 +95,7 @@ Vous pouvez également cacher `index.php` dans l'URL, comme décrit dans la part > Remarque: Si votre application s'exécute dans un environnement d'hébergement mutualisé où vous n'avez pas la permission de modifier la configuration du serveur Web, vous pouvez ajuster la structure de votre application pour une meilleure sécurité. Merci de lire la partie [Environnement d'hébergement mutualisé](tutorial-shared-hosting.md) pour en savoir plus. -### Configuration Apache recommandée +### Configuration Apache recommandée Utilisez la configuration suivante dans `httpd.conf`, ou dans la configuration de votre hôte virtuel. Notez que vous devez remplacer `path/to/basic/web` par le chemin vers le dossier `basic/web`. @@ -117,7 +117,7 @@ DocumentRoot "path/to/basic/web" ``` -### Configuration Nginx recommandée +### Configuration Nginx recommandée Pour utiliser Nginx, vous devez avoir installé PHP en utilisant [FPM SAPI](http://php.net/install.fpm). Utilisez la configuration Nginx suivante, en remplaçant `path/to/basic/web` par le chemin vers le dossier `basic/web` et `mysite.local` par le nom d'hôte de votre serveur. diff --git a/docs/guide-fr/start-workflow.md b/docs/guide-fr/start-workflow.md index e7bcc47253b..4efa37736dc 100644 --- a/docs/guide-fr/start-workflow.md +++ b/docs/guide-fr/start-workflow.md @@ -11,7 +11,7 @@ de votre configuration. Cette section vous initiera aux fonctionnalités intégr Pour vos besoins, merci d'ajuster les URLs dans notre description comme il convient. -Fonctionnalité +Fonctionnalité -------------- L'application basique installée contient quatre pages : @@ -29,7 +29,7 @@ Vous devriez également voir une barre d'outils en bas de votre fenêtre de navi C'est un [outil de débogage](tool-debugger.md) utile fourni par Yii pour enregistrer et afficher de nombreuses informations de débogage, telles que des messages de logs, statuts de réponses, les requêtes lancées vers la base de données, et ainsi de suite. -Structure de l'Application +Structure de l'Application --------------------- Les répertoires et fichiers les plus importants de votre application sont (en supposant que le répertoire racine de l'application est `basic`) : @@ -69,7 +69,7 @@ et distribue la requête aux éléments MVC. Les [Widgets](structure-widgets.md) pour aider à créer des éléments d'interface complexes et dynamiques. -Cycle de vie d'une requête +Cycle de vie d'une requête ----------------- Le diagramme suivant présente la manière dont une application traite une requête. diff --git a/docs/guide-fr/structure-entry-scripts.md b/docs/guide-fr/structure-entry-scripts.md index 760a28fd72e..c6344339961 100644 --- a/docs/guide-fr/structure-entry-scripts.md +++ b/docs/guide-fr/structure-entry-scripts.md @@ -23,7 +23,7 @@ Les scipts de démarrage effectuent principalement les tâches suivantes : * Appeler [[yii\base\Application::run()]] pour traiter la requête entrante. -## Applications Web +## Applications Web Ce qui suit est le code du script de démarrage du [Modèle Basique d'Application Web](start-installation.md). @@ -47,7 +47,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## Applications Console +## Applications Console De même, le code qui suit est le code du script de démarrage d'une application console : @@ -83,7 +83,7 @@ exit($exitCode); ``` -## Définir des Constantes +## Définir des Constantes Les scripts de démarrage sont l'endroit idéal pour définir des constantes globales. Yii supporte les trois constantes suivantes : diff --git a/docs/guide-it/start-installation.md b/docs/guide-it/start-installation.md index 6b090427a4f..72ce10ea543 100644 --- a/docs/guide-it/start-installation.md +++ b/docs/guide-it/start-installation.md @@ -8,7 +8,7 @@ semplicemente eseguendo un comando. > Nota: diversamente da Yii 1, le installazioni standard di Yii 2 comportano il download e l'installazione sia del framework che dello scheletro dell'applicazione -Installazione via Composer +Installazione via Composer -------------------------- Se non hai già installato Composer puoi farlo seguendo le istruzioni al sito @@ -49,7 +49,7 @@ installa Yii in una directory di nome `basic`. Puoi scegliere un nome diverso, s > il tuo codice. -Installazione da un archivio +Installazione da un archivio ---------------------------- L'installazione da un archivio compresso comporta tre passaggi: @@ -65,7 +65,7 @@ L'installazione da un archivio compresso comporta tre passaggi: ``` -Altre modalità di installazione +Altre modalità di installazione ------------------------------- Le istruzioni sopra elencate mostrano come installare Yii, e creano inoltre un'applicazione web base funzionante. @@ -79,7 +79,7 @@ Ma ci sono altre opzioni disponibili per l'installazione: [template di applicazione avanzata](tutorial-advanced-app.md). -Verifica dell'installazione +Verifica dell'installazione --------------------------- Dopo l'installazione puoi usare il tuo browser per accedere all'applicazione Yii installata con l'URL seguente: @@ -110,7 +110,7 @@ PHP 5.4 o successivo. Devi inoltre installare le [estensioni PDO di PHP](http:// di database di PDO (come ad esempio `pdo_mysql` per i database MySQL), se la tua applicazione richiede un database. -Configurazione del webserver +Configurazione del webserver ---------------------------- > Informazione: puoi saltare questa parte per ora se stai solo provando Yii e non hai intenzione di installarlo su un server di produzione. @@ -135,7 +135,7 @@ configurazione del webserver, ma dovrai comunque correggere la struttura della t riferimento alla sezione [ambienti di hosting condiviso](tutorial-shared-hosting.md) per maggiori dettagli. -### Configurazione consigliata di Apache +### Configurazione consigliata di Apache Usa questa configurazione nel file `httpd.conf` di Apache o nella definizione del tuo *VirtualHost*. Tieni presente che dovrai modificare `path/to/basic/web` con il percorso reale della tua `basic/web`. @@ -158,7 +158,7 @@ DocumentRoot "path/to/basic/web" ``` -### Configurazione consigliata di Nginx +### Configurazione consigliata di Nginx Devi aver installato PHP con il demone [FPM](http://php.net/install.fpm) per usare [Nginx](http://wiki.nginx.org/). Usa questa configurazione per Nginx, sostituendo `path/to/basic/web` con il percorso reale di `basic/web` e `mysite.local` con diff --git a/docs/guide-ja/caching-data.md b/docs/guide-ja/caching-data.md index 7462783bd80..3951dbf55ac 100644 --- a/docs/guide-ja/caching-data.md +++ b/docs/guide-ja/caching-data.md @@ -22,7 +22,7 @@ if ($data === false) { ``` -## キャッシュコンポーネント +## キャッシュコンポーネント データキャッシュはメモリ、ファイル、データベースなどさまざまなキャッシュストレージを表す、いわゆるキャッシュコンポーネントに依存しています。 @@ -64,7 +64,7 @@ if ($data === false) { > ヒント: キャッシュコンポーネントは複数登録することができます。`cache` という名前のコンポーネントはキャッシュに依存したクラスによってデフォルトで使用されています (例えば [[yii\web\UrlManager]] など) 。 -### サポートされているキャッシュストレージ +### サポートされているキャッシュストレージ Yii はさまざまなキャッシュストレージをサポートしています。以下は概要です: @@ -81,7 +81,7 @@ Yii はさまざまなキャッシュストレージをサポートしていま > ヒント: 同じアプリケーション内で異なるキャッシュを使用することもできます。一般的なやり方として、小さくとも常に使用されるデータ (例えば、統計データなど) を格納する場合はメモリベースのキャッシュストレージを使用し、大きくて使用頻度の低いデータを格納する場合はファイルベース、またはデータベースのキャッシュストレージを使用します (例えば、ページコンテンツなど) 。 -## キャッシュ API +## キャッシュ API すべてのキャッシュコンポーネントが同じ基底クラス [[yii\caching\Cache]] を持っているので、以下の API をサポートしています。 @@ -107,7 +107,7 @@ $value2 = $cache['var2']; // $value2 = $cache->get('var2'); と同等 ``` -### キャッシュのキーについて +### キャッシュのキーについて キャッシュに格納される各データは、一意のキーによって識別されるため、キャッシュ内にデータを格納するときはキーを指定する必要があります。あとでキャッシュからデータを取得するときは、それに対応するキーを用意する、といった感じです。 @@ -141,7 +141,7 @@ $value2 = $cache['var2']; // $value2 = $cache->get('var2'); と同等 相互運用性を確保するために、英数字のみを使用する必要があります。 -### キャッシュの有効期限 +### キャッシュの有効期限 キャッシュに格納されたデータは、いくつかのキャッシュポリシー (例えば、キャッシュスペースがいっぱいになったときは最も古いデータが削除される、など) の実施で除去されない限り、永遠に残り続けます。この動作を変えるために [[yii\caching\Cache::set()|set()]] で有効期限パラメータを指定することができます。パラメータはキャッシュ内に何秒間有効であるかを示します。[[yii\caching\Cache::get()|get()]] でデータを取得する際に有効期限が切れていた場合は、キャッシュ内にデータが見つからなかったことを示す false が返されます。例えば、 @@ -158,7 +158,7 @@ if ($data === false) { ``` -### キャッシュの依存関係 +### キャッシュの依存関係 有効期限の設定に加えて、キャッシュされたデータにはいわゆる *キャッシュの依存関係* の変化によって無効にすることもできます。例えば [[yii\caching\FileDependency]] はファイルの更新時刻の依存関係を表しています。依存関係が変更されたときに、対応するファイルが更新されることを意味しています。その結果、キャッシュ内で見つかった古いファイルのコンテンツは、無効とされるべきであり [[yii\caching\Cache::get()|get()]] は false を返します。 @@ -188,7 +188,7 @@ $data = $cache->get($key); - [[yii\caching\TagDependency]]: 一つまたは複数のタグを持つキャッシュされたデータを関連付けます。[[yii\caching\TagDependency::invalidate()]] を呼び出すことによって指定されたタグ(複数可)と、キャッシュされたデータを無効にすることができます。 -## クエリキャッシュ +## クエリキャッシュ クエリキャッシュは、データキャッシュ上に構築された特別なキャッシュ機能で、データベースのクエリ結果をキャッシュするために提供されています。 @@ -209,7 +209,7 @@ $result = $db->cache(function ($db) { > 情報: いくつかの DBMS (例えば [MySQL](http://dev.mysql.com/doc/refman/5.1/ja/query-cache.html)) でもデータベースのサーバサイドのクエリキャッシュをサポートしています。どちらのクエリキャッシュメカニズムも選べますが、前述した Yii のクエリキャッシュを使用することによって、キャッシュの依存関係を柔軟に指定できたり、潜在的にもより効率的でしょう。 -### 設定 +### 設定 クエリキャッシュは [[yii\db\Connection]] を通して 3 つのグローバルな設定可能オプションがあります: @@ -218,7 +218,7 @@ $result = $db->cache(function ($db) { * [[yii\db\Connection::queryCache|queryCache]]: これはキャッシュコンポーネントの ID を表します。デフォルトは `'cache'`。有効なキャッシュコンポーネントが存在する場合にのみ、クエリキャッシュが使用可能になります。 -### 使い方 +### 使い方 クエリキャッシュを使用する必要がある複数の SQL クエリを持っている場合は [[yii\db\Connection::cache()]] を使用することができます。使い方としては以下のように、 @@ -281,7 +281,7 @@ $result = $db->cache(function ($db) { ``` -### 制約 +### 制約 リソースハンドルを返すようなクエリにはクエリキャッシュは働きません。例えばいくつかの DBMS において BLOB 型のカラムを用いる場合、クエリ結果はカラムデータについてリソースハンドルを返します。 diff --git a/docs/guide-ja/caching-fragment.md b/docs/guide-ja/caching-fragment.md index 9ed915845f8..47a66822b23 100644 --- a/docs/guide-ja/caching-fragment.md +++ b/docs/guide-ja/caching-fragment.md @@ -19,11 +19,11 @@ if ($this->beginCache($id)) { [データキャッシュ](caching-data.md) と同様に、キャッシュされたコンテンツを識別するためにユニークな `$id` が必要になります。 -## キャッシュのオプション +## キャッシュのオプション [[yii\base\View::beginCache()|beginCache()]] メソッドの 2 番目のパラメータを配列にすることで、フラグメントキャッシュに関する追加のオプションを指定することもできます。裏で、この配列のオプションは実際にフラグメントキャッシュ機能を実装している [[yii\widgets\FragmentCache]] ウィジェットを構成するために使用されます。 -### 持続時間 +### 持続時間 おそらくフラグメントキャッシュで通常よく使われるであろうオプションは [[yii\widgets\FragmentCache::duration|duration]] でしょう。このオプションにはコンテンツがどれだけの時間キャッシュ内において有効であるかを指定します。以下のコードは最大で 1 時間コンテンツの断片をキャッシュします: @@ -40,7 +40,7 @@ if ($this->beginCache($id, ['duration' => 3600])) { オプションがセットされていない場合は、デフォルトである 60 が使われ、つまり有効期限が 60 秒間のキャッシュされたコンテンツを意味します。 -### 依存関係 +### 依存関係 [データキャッシュ](caching-data.md#cache-dependencies) と同様に、キャッシュされたコンテンツの断片は依存関係を持つことができます。例えば、表示されている投稿の内容は、投稿が変更されたか否かに依存する、といった具合です。 @@ -61,7 +61,7 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ``` -### バリエーション +### バリエーション キャッシュされたコンテンツはいくつかのパラメータによって変化させることもできます。例えば、複数の言語をサポートしているウェブアプリケーションに対して、ビューコードの同じ部分を、異なる言語で生成することができます。現在のアプリケーションの言語に応じて、キャッシュされたコンテンツに変更を加えるといったことが可能になります。 @@ -77,7 +77,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ``` -### トグルキャッシュ +### トグルキャッシュ また、ある条件が満たされた場合にのみフラグメントキャッシュを有効にすることもできます。たとえば、フォームが表示されているページに対して、最初の (GET リクエストによる) リクエストの場合だけはキャッシュしたいと思いますが、その後の (POST リクエストによる) フォームの表示では、フォームにユーザ入力が含まれている可能性があるため、キャッシュをすべきではありません。これを行うには、以下のように [[yii\widgets\FragmentCache::enabled|enabled]] オプションをセットします: @@ -91,7 +91,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## キャッシュのネスト +## キャッシュのネスト フラグメントキャッシュはネストすることができます。つまり、キャッシュされる断片を、より大きなキャッシュされる断片で囲むことができます。例えば、コメントが内側のフラグメントキャッシュ内にキャッシュされ、それらが外側のフラグメントキャッシュに記事内容と一緒にキャッシュされます。以下のコードは 2 つのフラグメントキャッシュをどのようにネストできるかを示したものです: @@ -116,7 +116,7 @@ if ($this->beginCache($id1)) { ネストされたキャッシュには、異なるキャッシュオプションを設定することができます。 たとえば、上記の例における内側のキャッシュと外側のキャッシュに対して、異なる持続期間の値を設定する事が可能です。 これによって、外側のキャッシュでキャッシュされたデータが無効になった場合でも、内側のキャッシュが有効な内側の断片を提供することが可能になります。 しかし、その逆は真ではありません。 外側のキャッシュが有効であると判断された場合には、内側のキャッシュが無効になった後でも、外側のキャッシュが古くなったコンテンツのコピーを提供し続けます。 ネストされたキャッシュの持続時間や依存関係の設定を間違うと、無効になった内側のキャッシュデータが外側のキャッシュに残り続けることになるので、注意が必要です。 -## ダイナミックコンテンツ +## ダイナミックコンテンツ フラグメントキャッシュを使用する際、出力全体が比較的静的で、一ヶ所ないし数ヶ所だけが例外的に動的であるというような状況に遭遇します。例えば、ページ上部にはメインメニューバーと現在のユーザの名前とが一緒に表示される場合があります。他には、リクエスト毎に実行しなければいけない PHP のコードが含まれている場合(例えば、アセットバンドルを登録するためのコード)などです。この両方の問題は、いわゆる *ダイナミックコンテンツ* 機能によって解決することができます。 diff --git a/docs/guide-ja/caching-http.md b/docs/guide-ja/caching-http.md index a5e473ad87b..53366801ae0 100644 --- a/docs/guide-ja/caching-http.md +++ b/docs/guide-ja/caching-http.md @@ -10,7 +10,7 @@ HTTP キャッシュ * [[yii\filters\HttpCache::cacheControlHeader|Cache-Control]] -## `Last-Modified` ヘッダ +## `Last-Modified` ヘッダ `Last-Modified` ヘッダは、クライアントがそれをキャッシュする時から、ページが変更されたかどうかを示すために、タイムスタンプを使用しています。 @@ -46,7 +46,7 @@ public function behaviors() 上記のコードは `index` アクションでのみ HTTP キャッシュを有効にしている状態です。投稿の最終更新時刻に基づいて `Last-Modified` を生成する必要があります。ブラウザが初めて `index` ページにアクセスすると、ページはサーバ上で生成されブラウザに送信されます。もしブラウザが再度同じページにアクセスし、その期間中に投稿に変更がない場合は、ブラウザはクライアントサイドにキャッシュしたものを使用するので、サーバはページを再生成することはありません。その結果、サーバサイドのレンダリング処理とページコンテンツの送信は両方ともスキップされます。 -## `ETag` ヘッダ +## `ETag` ヘッダ "Entity Tag" (略して `ETag`) ヘッダはページコンテンツを表すためにハッシュを使用します。ページが変更された場合ハッシュも同様に変更されます。サーバサイドで生成されたハッシュとクライアントサイドで保持しているハッシュを比較することによって、ページが変更されたかどうか、また再送信するべきかどうかを決定します。 @@ -87,7 +87,7 @@ ETag はリクエスト毎に再評価する必要があるため、負荷の高 > 注意: [RFC 7232](http://tools.ietf.org/html/rfc7232#section-2.4) に準拠して `Etag` と `Last-Modified` ヘッダの両方を設定した場合、`HttpCache` はその両方とも送信します。また、もし `If-None-Match` ヘッダと `If-Modified-Since` ヘッダの両方を送信した場合は前者のみが尊重されます。 -## `Cache-Control` ヘッダ +## `Cache-Control` ヘッダ `Cache-Control` ヘッダはページのための一般的なキャッシュポリシーを指定します。ヘッダ値に [[yii\filters\HttpCache::cacheControlHeader]] プロパティを設定することで、それを送ることができます。デフォルトでは、以下のヘッダーが送信されます: @@ -95,11 +95,11 @@ ETag はリクエスト毎に再評価する必要があるため、負荷の高 Cache-Control: public, max-age=3600 ``` -## セッションキャッシュリミッタ +## セッションキャッシュリミッタ ページでセッションを使用している場合、PHP はいくつかのキャッシュ関連の HTTP ヘッダ(PHP の設定ファイル内で指定されている session.cache_limiter など)を自動的に送信します。これらのヘッダは `HttpCache` で妨害したり、必要なキャッシュを無効にしたりできます。この動作を変更したい場合は [[yii\filters\HttpCache::sessionCacheLimiter]] プロパティを設定します。プロパティには `public`、`private`、`private_no_expire`、そして `nocache` などの文字列の値を使用することができます。これらの値についての説明は [session_cache_limiter()](http://www.php.net/manual/ja/function.session-cache-limiter.php) を参照してください。 -## SEO への影響 +## SEO への影響 検索エンジンのボットはキャッシュヘッダを尊重する傾向があります。 クローラの中には、一定期間内に処理するドメインごとのページ数に制限を持っているものもあるため、キャッシュヘッダを導入して、処理の必要があるページ数を減らしてやると、サイトのインデックスの作成を促進できるかも知れません。 diff --git a/docs/guide-ja/concept-aliases.md b/docs/guide-ja/concept-aliases.md index 74a924c0b79..2637b1e4f1f 100644 --- a/docs/guide-ja/concept-aliases.md +++ b/docs/guide-ja/concept-aliases.md @@ -5,7 +5,7 @@ たとえば、 `@yii` というエイリアスは Yii フレームワークのインストールパスを表し、 `@web` は現在実行中の Web アプリケーションのベース URL を表します。 -エイリアスの定義 +エイリアスの定義 ---------------- [[Yii::setAlias()]] を呼び出すことにより、ファイルパスまたは URL のエイリアスを定義することができます。 @@ -47,7 +47,7 @@ return [ ``` -エイリアスの解決 +エイリアスの解決 ----------------- [[Yii::getAlias()]] を呼び出して、ルートエイリアスが表すファイルパスまたはURLを解決することができます。 @@ -77,7 +77,7 @@ Yii::getAlias('@foo/bar/file.php'); // /path2/bar/file.php を表示 もし `@foo/bar` がルートエイリアスとして定義されていなければ、最後のステートメントは `/path/to/foo/bar/file.php` を表示します。 -エイリアスの使用 +エイリアスの使用 ------------- エイリアスは、それをパスやURLに変換するための [[Yii::getAlias()​]] の呼び出しがなくても、Yiiの多くの場所でみられます。 @@ -95,7 +95,7 @@ $cache = new FileCache([ プロパティやメソッドのパラメータがエイリアスをサポートしているかどうかは、API ドキュメントに注意を払ってください。 -事前定義されたエイリアス +事前定義されたエイリアス ------------------ Yii では、一般的に使用されるフ​​ァイルのパスと URL を簡単に参照できるよう、エイリアスのセットが事前に定義されています: @@ -112,7 +112,7 @@ Yii では、一般的に使用されるフ​​ァイルのパスと URL を `@yii` エイリアスは [エントリスクリプト](structure-entry-scripts.md) に `Yii.php` ファイルを読み込んだ時点で定義されます。 エイリアスの残りの部分は、アプリケーションのコンストラクタ内で、アプリケーションの [構成情報](concept-configurations.md) を適用するときに定義されます。 -エクステンションのエイリアス +エクステンションのエイリアス ----------------- Composer でインストールされる各 [エクステンション](structure-extensions.md) ごとに、エイリアスが自動的に定義されます。 diff --git a/docs/guide-ja/concept-autoloading.md b/docs/guide-ja/concept-autoloading.md index f4d74feb679..9f62b9898c0 100644 --- a/docs/guide-ja/concept-autoloading.md +++ b/docs/guide-ja/concept-autoloading.md @@ -9,7 +9,7 @@ Yiiは、必要となるすべてのクラスファイルを、特定してイ ここに記述されている内容は、同様に、インタフェースとトレイトのオートロードにも適用されることに注意してください。 -Yii オートローダーの使用 +Yii オートローダーの使用 ------------------------ Yii のクラスオートローダーを使用するには、自分のクラスを作成して名前を付けるとき、次の2つの単純なルールに従わなければなりません: @@ -36,7 +36,7 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); オートロードできるようになります。 -クラスマップ +クラスマップ --------- Yii のクラスオートローダーは、 *クラスマップ* 機能をサポートしており、クラス名を対応するクラスファイルのパスにマップできます。 @@ -54,7 +54,7 @@ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; [ブートストラップ](runtime-bootstrapping.md) プロセス内でクラスマップを設定する必要があります。 -他のオートローダーの使用 +他のオートローダーの使用 ----------------------- Yii はパッケージ依存関係マネージャとして Composer を包含しているので、Composer のオートローダーもインストールすることをお勧めします。 @@ -77,7 +77,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); それを [エントリスクリプト](structure-entry-scripts.md) でインクルードする必要があります。 -エクステンションクラスのオートロード +エクステンションクラスのオートロード ----------------------------- Yii のオートローダーは、 [エクステンション](structure-extensions.md) クラスのオートロードが可能です。唯一の要件は、 diff --git a/docs/guide-ja/concept-behaviors.md b/docs/guide-ja/concept-behaviors.md index fd75878fefa..c955d2561ce 100644 --- a/docs/guide-ja/concept-behaviors.md +++ b/docs/guide-ja/concept-behaviors.md @@ -10,7 +10,7 @@ ビヘイビアでコンポーネントの通常のコード実行をカスタマイズすることができます。 -ビヘイビアの定義 +ビヘイビアの定義 ------------------ ビヘイビアを定義するには、 [[yii\base\Behavior]] あるいは子クラスを継承するクラスを作成します。たとえば: @@ -97,7 +97,7 @@ function ($event) { } ``` -ビヘイビアのアタッチ +ビヘイビアのアタッチ ------------------- [[yii\base\Component|component]] へのビヘイビアのアタッチは、静的にも動的にも可能です。実際は、前者のほうがより一般的ですが。 @@ -188,7 +188,7 @@ $component->attachBehaviors([ 詳しくは [構成情報](concept-configurations.md#configuration-format) セクションを参照してください。 -ビヘイビアの使用 +ビヘイビアの使用 --------------- ビヘイビアを使用するには、まず上記の方法に従って [[yii\base\Component|コンポーネント]] にアタッチします。ビヘイビアがコンポーネントにアタッチされれば、その使用方法はシンプルです。 @@ -228,7 +228,7 @@ $behaviors = $component->getBehaviors(); ``` -ビヘイビアのデタッチ +ビヘイビアのデタッチ ------------------- ビヘイビアをデタッチするには、ビヘイビアに付けられた名前とともに [[yii\base\Component::detachBehavior()]] を呼び出します: @@ -244,7 +244,7 @@ $component->detachBehaviors(); ``` -`TimestampBehavior` の利用 +`TimestampBehavior` の利用 ------------------------- しめくくりに、[[yii\behaviors\TimestampBehavior]] を見てみましょう。このビヘイビアは、 @@ -300,7 +300,7 @@ echo $user->created_at; // 現在のタイムスタンプが表示される $user->touch('login_time'); ``` -ビヘイビアとトレイトの比較 +ビヘイビアとトレイトの比較 ---------------------- ビヘイビアは、主となるクラスにそのプロパティやメソッドを「注入する」という点で [トレイト](http://www.php.net/traits) @@ -308,7 +308,7 @@ $user->touch('login_time'); それらは代替手段というよりも、むしろ相互補完関係のようなものです。 -### ビヘイビアを使う理由 +### ビヘイビアを使う理由 ビヘイビアは通常のクラスのように、継承をサポートしています。いっぽうトレイトは、 言語サポートされたコピー&ペーストとみなすことができます。トレイトは継承をサポートしません。 @@ -324,7 +324,7 @@ $user->touch('login_time'); 別のトレイトが起こした名前競合の場合、影響を受けるプロパティやメソッドの名前変更による、手動での解決が必要です。 -### トレイトを使う理由 +### トレイトを使う理由 ビヘイビアは時間もメモリも食うオブジェクトなので、トレイトはビヘイビアよりはるかに効率的です。 diff --git a/docs/guide-ja/concept-configurations.md b/docs/guide-ja/concept-configurations.md index 954473440d1..2270ae7b91a 100644 --- a/docs/guide-ja/concept-configurations.md +++ b/docs/guide-ja/concept-configurations.md @@ -30,7 +30,7 @@ Yii::configure($object, $config); なお、この場合には、構成情報配列に `class` 要素を含んではいけません。 -## 構成情報の形式 +## 構成情報の形式 構成情報の形式は、フォーマルには次のように説明できます: @@ -72,14 +72,14 @@ Yii::configure($object, $config); ``` -## 構成情報の使用 +## 構成情報の使用 構成情報は Yii の多くの場所で使用されています。このセクションの冒頭では、 [[Yii::createObject()]] を使って、構成情報に応じてオブジェクトを作成する方法を示しました。このサブセクションでは、 アプリケーションの構成とウィジェットの構成という、2つの主要な構成情報の用途を説明します。 -### アプリケーションの構成 +### アプリケーションの構成 [アプリケーション](structure-applications.md) の構成は、おそらく Yii の中で最も複雑な配列のひとつです。 それは [[yii\web\Application|application]] クラスが、設定可能なプロパティとイベントを数多く持つためです。 @@ -129,7 +129,7 @@ $config = [ アプリケーションの `components` プロパティ構成の詳細については、 [アプリケーション](structure-applications.md) セクションと [サービスロケータ](concept-service-locator.md) セクションにあります。 -### ウィジェットの構成 +### ウィジェットの構成 [ウィジェット](structure-widgets.md) を使用するときは、多くの場合、ウィジェットのプロパティをカスタマイズするために、構成情報を使用する必要があります。 [[yii\base\Widget::widget()]] と [[yii\base\Widget::begin()]] の両メソッドを使って、ウィジェットを作成できます。それらは、以下のような構成情報配列を取ります。 @@ -153,7 +153,7 @@ echo Menu::widget([ クラス名がすでに与えられているので、構成情報配列が `class` キーを持つべきではないことに注意してください。 -## 構成情報ファイル +## 構成情報ファイル 構成情報がとても複雑になる場合、一般的な方法は、 *構成情報ファイル* と呼ばれる、ひとつまたは複数の PHP ファイルにそれを格納することです。 構成情報ファイルは、構成情報を表す PHP 配列を return します。 @@ -205,7 +205,7 @@ $config = require('path/to/web.php'); ``` -## デフォルト設定 +## デフォルト設定 [[Yii::createObject()]] メソッドは、 [依存性注入コンテナ](concept-di-container.md) をベースに実装されています。 そのため、指定されたクラスが [[Yii::createObject()]] を使用して作成されるとき、そのすべてのインスタンスに適用される、 @@ -224,7 +224,7 @@ $config = require('path/to/web.php'); デフォルト設定を使用しなければ、あなたは、リンクページャーを使うすべての箇所で `maxButtonCount` を設定しなければなりません。 -## 環境定数 +## 環境定数 構成情報は、多くの場合、アプリケーションが実行される環境に応じて変化します。たとえば、 開発環境では `mydb_dev` という名前のデータベースを使用し、本番サーバー上では `mydb_prod` データベースを diff --git a/docs/guide-ja/concept-di-container.md b/docs/guide-ja/concept-di-container.md index 51508ff273b..bec68c49749 100644 --- a/docs/guide-ja/concept-di-container.md +++ b/docs/guide-ja/concept-di-container.md @@ -6,7 +6,7 @@ ここでは、主に Yii の提供する DI コンテナの使用方法を説明します。 -依存性注入 +依存性注入 -------------------- Yii は [[yii\di\Container]] クラスを通して DI コンテナの機能を提供します。これは、次の種類の依存性注入をサポートしています: @@ -16,7 +16,7 @@ Yii は [[yii\di\Container]] クラスを通して DI コンテナの機能を * PHP コーラブル·インジェクション -### コンストラクタ·インジェクション +### コンストラクタ·インジェクション DI コンテナは、コンストラクタパラメータの型ヒントの助けを借りた、コンストラクタ·インジェクションをサポートしています。 型ヒントは、クラスやインタフェースが新しいオブジェクトの作成で使用されるさい、どれが依存であるのかということをコンテナに教えます。 @@ -38,7 +38,7 @@ $foo = new Foo($bar); ``` -### セッター/プロパティ·インジェクション +### セッター/プロパティ·インジェクション セッター/プロパティ·インジェクションは、[構成情報](concept-configurations.md) を通してサポートされます。 依存関係を登録するときや、新しいオブジェクトを作成するとき、コンテナが使用する構成情報を提供することができ、 @@ -71,7 +71,7 @@ $container->get('Foo', [], [ ``` -### PHP コーラブル・インジェクション +### PHP コーラブル・インジェクション この場合、コンテナは、登録された PHP のコーラブルオブジェクトを使用し、クラスの新しいインスタンスを構築します。 コーラブルは、依存関係を解決し、新しく作成されたオブジェクトに適切にそれらを注入する責任があります。たとえば @@ -85,7 +85,7 @@ $foo = $container->get('Foo'); ``` -依存関係の登録 +依存関係の登録 ------------------------ あなたは、[[yii\di\Container::set()]] 使って依存関係を登録することができます。登録には依存関係の名前だけでなく、 @@ -149,7 +149,7 @@ $container->setSingleton('yii\db\Connection', [ ``` -依存関係の解決 +依存関係の解決 ---------------------- 依存関係を登録すると、新しいオブジェクトを作成するのに DI コンテナを使用することができ、 @@ -239,7 +239,7 @@ $lister = new UserLister($finder); ``` -実際の使いかた +実際の使いかた --------------- あなたのアプリケーションの [エントリスクリプト](structure-entry-scripts.md) で `Yii.php` ファイルをインクルードするとき、 @@ -301,7 +301,7 @@ class HotelController extends Controller のインスタンスが作成され、コントローラのコンストラクタに3番目のパラメータとして注入されるようになります。 -依存関係を登録するときに +依存関係を登録するときに ----------------------------- 依存関係は、新しいオブジェクトが作成されるとき必要とされるので、それらの登録は可能な限り早期に行われるべきです。 @@ -313,7 +313,7 @@ class HotelController extends Controller 依存関係を登録することができます。 -まとめ +まとめ ------- 依存性注入と [サービスロケータ](concept-service-locator.md) はともに、疎結合でよりテストしやすい方法でのソフトウェア構築を可能にする、 diff --git a/docs/guide-ja/concept-events.md b/docs/guide-ja/concept-events.md index 84b06e8fedd..a4b6b48364d 100644 --- a/docs/guide-ja/concept-events.md +++ b/docs/guide-ja/concept-events.md @@ -10,7 +10,7 @@ Yiiはイベントをサポートするために、 [[yii\base\Component]] と [[yii\base\Component]] もしくはその子クラスを継承する必要があります。 -イベントハンドラ +イベントハンドラ -------------- イベントハンドラとは、関連するイベントがトリガされたときに実行される、 [PHP コールバック](http://www.php.net/manual/en/language.types.callable.php) @@ -36,7 +36,7 @@ function ($event) { - [[yii\base\Event::data|カスタムデータ]]: イベントハンドラを接続するときに提供されたデータ (後述) -イベントハンドラのアタッチ +イベントハンドラのアタッチ ------------------------ イベントハンドラは [[yii\base\Component::on()]] を呼び出すことでアタッチできます。たとえば: @@ -98,7 +98,7 @@ $foo->on(Foo::EVENT_HELLO, function ($event) { }, $data, false); ``` -イベントのトリガー +イベントのトリガー ----------------- イベントは、 [[yii\base\Component::trigger()]] メソッドを呼び出すことでトリガされます。このメソッドには **イベント名** が必須で、 @@ -162,7 +162,7 @@ class Mailer extends Component アタッチされたハンドラがすべて呼び出されます。 -イベントハンドラのデタッチ +イベントハンドラのデタッチ ------------------------ イベントからハンドラを取り外すには、 [[yii\base\Component::off()]] メソッドを呼び出します。たとえば: @@ -191,7 +191,7 @@ $foo->off(Foo::EVENT_HELLO); ``` -クラスレベル・イベントハンドラ +クラスレベル・イベントハンドラ -------------------------- ここまでの項では、 *インスタンスレベル* でのイベントにハンドラをアタッチする方法を説明してきました。 @@ -249,7 +249,7 @@ Event::off(Foo::className(), Foo::EVENT_HELLO); ``` -グローバル・イベント +グローバル・イベント ------------- Yiiは、実際に上記のイベントメカニズムに基づいたトリックである、いわゆる *グローバル・イベント* をサポートしています。 diff --git a/docs/guide-ja/db-dao.md b/docs/guide-ja/db-dao.md index aa222f63761..eb05d586bdd 100644 --- a/docs/guide-ja/db-dao.md +++ b/docs/guide-ja/db-dao.md @@ -19,7 +19,7 @@ Yii は下記の DBMS のサポートを内蔵しています。 - [MSSQL](https://www.microsoft.com/en-us/sqlserver/default.aspx): バージョン 2008 以上。 -## DB 接続を作成する +## DB 接続を作成する データベースにアクセスするために、まずは、データベースに接続するために [[yii\db\Connection]] のインスタンスを作成する必要があります。 @@ -88,7 +88,7 @@ ODBC 経由でデータベースに接続しようとする場合は、[[yii\db\ > Info|情報: DB 接続のインスタンスを作成するとき、実際のデータベース接続は、最初の SQL を実行するか、[[yii\db\Connection::open()|open()]] メソッドを明示的に呼ぶかするまでは確立されません。 -## SQL クエリを実行する +## SQL クエリを実行する いったんデータベース接続のインスタンスを得てしまえば、次の手順に従って SQL クエリを実行することが出来ます。 @@ -146,7 +146,7 @@ return [ ``` -### パラメータをバインドする +### パラメータをバインドする パラメータを持つ SQL から DB コマンドを作成するときは、SQL インジェクション攻撃を防止するために、ほとんど全ての場合においてパラメータをバインドする手法を用いるべきです。 例えば、 @@ -207,7 +207,7 @@ $post2 = $command->queryOne(); このやり方でクエリを実行すると、パラメータの値が違うごとに新しいクエリを実行するのに比べて、はるかに効率が良くすることが出来ます。 -### SELECT しないクエリを実行する +### SELECT しないクエリを実行する 今までのセクションで紹介した `queryXyz()` メソッドは、すべて、データベースからデータを取得する SELECT クエリを扱うものでした。 データを返さないクエリのためには、代りに [[yii\db\Command::execute()]] メソッドを呼ばなければなりません。 @@ -250,7 +250,7 @@ $db->createCommand()->batchInsert('user', ['name', 'age'], [ ])->execute(); ``` -## テーブルとカラムの名前を引用符で囲む +## テーブルとカラムの名前を引用符で囲む 特定のデータベースに依存しないコードを書くときには、テーブルとカラムの名前を適切に引用符で囲むことが、たいてい、頭痛の種になります。 データベースによって名前を引用符で囲む規則がさまざまに異なるからです。 @@ -268,7 +268,7 @@ $count = $db->createCommand("SELECT COUNT([[id]]) FROM {{employee}}") ->queryScalar(); ``` -### テーブルプレフィックスを使う +### テーブルプレフィックスを使う あなたの DB テーブルのほとんどが何か共通のプレフィックスを持っている場合は、Yii DAO によってサポートされているテーブルプレフィックスの機能を使うことが出来ます。 @@ -297,7 +297,7 @@ $count = $db->createCommand("SELECT COUNT([[id]]) FROM {{%employee}}") ->queryScalar(); ``` -## トランザクションを実行する +## トランザクションを実行する 一続きになった複数の関連するクエリを実行するときは、データの整合性を一貫性を保証するために、一連のクエリをトランザクションで囲む必要がある場合があります。 一連のクエリのどの一つが失敗した場合でも、データベースは、何一つクエリが実行されなかったかのような状態へとロールバックされます。 @@ -339,7 +339,7 @@ try { そうでなければ、例外がトリガされてキャッチされ、[[yii\db\Transaction::rollBack()|rollBack()]] が呼ばれて、失敗したクエリに先行するクエリがトランザクションの中で行った変更がロールバックされます。 -### 分離レベルを指定する +### 分離レベルを指定する Yii は、トランザクションの [分離レベル] の設定もサポートしています。 デフォルトでは、新しいトランザクションを開始したときは、データベースシステムによって設定された分離レベルを使用します。 @@ -380,7 +380,7 @@ DBMS によっては、接続全体に対してのみ分離レベルの設定を [分離レベル]: http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%86%E9%9B%A2%E3%83%AC%E3%83%99%E3%83%AB -### トランザクションを入れ子にする +### トランザクションを入れ子にする あなたの DBMS が Savepoint をサポートしている場合は、次のように、複数のトランザクションを入れ子にすることが出来ます。 @@ -416,7 +416,7 @@ try { ``` -## レプリケーションと読み書きの分離 +## レプリケーションと読み書きの分離 多くの DBMS は、データベースの可用性とサーバのレスポンスタイムを向上させるために、[データベースレプリケーション](http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3#.E3.83.87.E3.83.BC.E3.82.BF.E3.83.99.E3.83.BC.E3.82.B9) をサポートしています。 データベースレプリケーションによって、データはいわゆる *マスタサーバ* から *スレーブサーバ* に複製されます。 @@ -567,7 +567,7 @@ $rows = $db->useMaster(function ($db) { 直接に `$db->enableSlaves` を false に設定して、全てのクエリをマスタ接続に向けることも出来ます。 -## データベーススキーマを扱う +## データベーススキーマを扱う Yii DAO は、新しいテーブルを作ったり、テーブルからカラムを削除したりなど、データベーススキーマを操作することを可能にする一揃いのメソッドを提供しています。 以下がそのソッドのリストです。 diff --git a/docs/guide-ja/helper-array.md b/docs/guide-ja/helper-array.md index 850993aa4f2..55ee901b913 100644 --- a/docs/guide-ja/helper-array.md +++ b/docs/guide-ja/helper-array.md @@ -4,7 +4,7 @@ ArrayHelper [PHP の充実した配列関数](http://php.net/manual/ja/book.array.php) への追加として、Yii の配列ヘルパは、配列をさらに効率的に扱うことを可能にするスタティックなメソッドを提供しています。 -## 値を取得する +## 値を取得する 配列、オブジェクト、またはその両方から成る複雑な構造から値を取得することは、標準的な PHP を使う場合、何度も繰り返さねばならない面倒くさい仕事です。 最初に `isset` でキーの存在をチェックしなければならず、次に、キーが存在していれば値を取得し、存在していなければ、デフォルト値を提供しなければなりません。 @@ -63,7 +63,7 @@ $type = ArrayHelper::remove($array, 'type'); `getValue` メソッドとは違って、`remove` は単純なキー名だけをサポートすることに注意してください。 -## キーの存在をチェックする +## キーの存在をチェックする `ArrayHelper::keyExists` は、大文字と小文字を区別しないキーの比較をサポートすることを除いて、[array_key_exists](http://php.net/manual/ja/function.array-key-exists.php) と同じ動作をします。 例えば、 @@ -82,7 +82,7 @@ if (!ArrayHelper::keyExists('username', $data1, false) || !ArrayHelper::keyExist } ``` -## カラムを取得する +## カラムを取得する データ行またはオブジェクトの配列から、あるカラムの値を取得する必要があることがよくあります。 良くある例は、ID のリストの取得です。 @@ -106,7 +106,7 @@ $result = ArrayHelper::getColumn($array, function ($element) { ``` -## 配列を再インデックスする +## 配列を再インデックスする 指定されたキーに従って配列にインデックスを付けるために、`index` メソッドを使うことが出来ます。 入力値の配列は、多次元配列であるか、オブジェクトの配列でなければなりません。 @@ -134,7 +134,7 @@ $result = ArrayHelper::index($array, function ($element) { ``` -## マップを作成する +## マップを作成する 多次元配列またはオブジェクトの配列からマップ (キー-値 のペア) を作成するためには `map` メソッドを使うことが出来ます。 `$from` と `$to` のパラメータで、マップを構成するキー名またはプロパティ名を指定します。 @@ -170,7 +170,7 @@ $result = ArrayHelper::map($array, 'id', 'name', 'class'); ``` -## 多次元配列の並べ替え +## 多次元配列の並べ替え `multisort` メソッドは、オブジェクトの配列または入れ子にされた配列を、一つまたは複数のキーによって並べ替えることを手助けします。 例えば、 @@ -210,7 +210,7 @@ ArrayHelper::multisort($data, function($item) { 最後の引数は並べ替えのフラグで、PHP の [sort()](http://php.net/manual/ja/function.sort.php) 関数に渡されるのと同じ値を取ることが出来ます。 -## 配列の型を検出する +## 配列の型を検出する 配列が添字配列であるか連想配列であるかを知ることが出来ると便利です。例を挙げましょう。 @@ -225,7 +225,7 @@ echo ArrayHelper::isAssociative($associative); ``` -## 値を HTML エンコード / デコードする +## 値を HTML エンコード / デコードする 文字列の配列の中にある特殊文字を HTML エンティティ にエンコード、または、HTML エンティティからデコードするために、下記の関数を使うことが出来ます。 @@ -239,7 +239,7 @@ $decoded = ArrayHelper::htmlDecode($data); エンコードにはアプリケーションの文字セットが使用されますが、三番目の引数によってそれを変更することも出来ます。 -## 配列をマージする +## 配列をマージする ```php /** @@ -256,7 +256,7 @@ $decoded = ArrayHelper::htmlDecode($data); ``` -## オブジェクトを配列に変換する +## オブジェクトを配列に変換する オブジェクトまたはオブジェクトの配列を配列に変換する必要があることがよくあります。 最もよくあるのは、REST API によってデータ配列を提供するなどの目的で、アクティブレコードモデルを変換する場合です。 diff --git a/docs/guide-ja/helper-html.md b/docs/guide-ja/helper-html.md index 2f084bd42f4..f736a27b9f8 100644 --- a/docs/guide-ja/helper-html.md +++ b/docs/guide-ja/helper-html.md @@ -10,13 +10,13 @@ Yii はそのような手助けを Html ヘルパの形式で提供します。 > 何でもかんでも Html ヘルパの呼び出しでラップする必要はありません。 -## 基礎 +## 基礎 動的な HTML を文字列の連結によって構築していると、あっという間に乱雑なコードになります。 そのため、Yii はタグのオプションを操作し、それらのオプションに基づいてタグを構築する一連のメソッドを提供します。 -### タグを生成する +### タグを生成する タグを生成するコードは次のようなものです。 @@ -52,7 +52,7 @@ Yii はそのような手助けを Html ヘルパの形式で提供します。 すなわち、`'data' => ['params' => ['id' => 1, 'name' => 'yii'], 'status' => 'ok']` は `data-params='{"id":1,"name":"yii"}' data-status="ok"` となります。 -### CSS のクラスとスタイルを形成する +### CSS のクラスとスタイルを形成する HTML タグのオプションを構築する場合、たいていは、デフォルトの値から始めて必要な修正をする、という方法をとります。 CSS クラスを追加または削除するために、次のコードを使用することが出来ます。 @@ -89,7 +89,7 @@ Html::removeCssStyle($options, ['width', 'height']); プロパティが一つだけである場合は、文字列で指定することも出来ます。 -### コンテントをエンコードおよびデコードする +### コンテントをエンコードおよびデコードする コンテントが適切かつ安全に HTML として表示されるためには、コンテント内の特殊文字がエンコードされなければなりません。 特殊文字のエンコードとデコードは、PHP では [htmlspecialchars](http://www.php.net/manual/ja/function.htmlspecialchars.php) と [htmlspecialchars_decode](http://www.php.net/manual/ja/function.htmlspecialchars-decode.php) によって行われます。 @@ -104,7 +104,7 @@ $decodedUserName = Html::decode($userName); ``` -## フォーム +## フォーム フォームのマークアップを扱う仕事は、極めて面倒くさく、エラーを生じがちなものです。 このため、フォームのマークアップの仕事を助けるための一群のメソッドがあります。 @@ -112,7 +112,7 @@ $decodedUserName = Html::decode($userName); > Note|注意: モデルを扱っており、バリデーションが必要である場合は、[[yii\widgets\ActiveForm|ActiveForm]] を使うことを検討してください。 -### フォームを作成する +### フォームを作成する フォームを開始するためには、次のように [[yii\helpers\Html::beginForm()|beginForm()]] メソッドを使うことが出来ます。 @@ -134,7 +134,7 @@ $decodedUserName = Html::decode($userName); ``` -### ボタン +### ボタン ボタンを生成するためには、次のコードを使うことが出来ます。 @@ -148,7 +148,7 @@ $decodedUserName = Html::decode($userName); タイトルはエンコードされませんので、エンドユーザからデータを取得する場合は [[yii\helpers\Html::encode()|Html::encode()]] を使ってエンコードしてください。 -### インプットフィールド +### インプットフィールド インプットのメソッドには二つのグループがあります。 一つは `active` から始まるものでアクティブインプットと呼ばれます。もう一方は `active` から始まらないものです。 @@ -213,7 +213,7 @@ $decodedUserName = Html::decode($userName); ``` -### ラベルとエラー +### ラベルとエラー インプットと同じように、ラベルを生成するメソッドが二つあります。 モデルからデータを取るアクティブなラベルと、データを直接受け入れるアクティブでないラベルです。 @@ -236,7 +236,7 @@ $decodedUserName = Html::decode($userName); ``` -### インプットの名前と値 +### インプットの名前と値 モデルに基づいてインプットフィールドの名前、ID、値を取得するメソッドがあります。 これらは主として内部的に使用されるものですが、場合によっては重宝します。 @@ -271,7 +271,7 @@ echo Html::getAttributeName('dates[0]'); ``` -## スタイルとスクリプト +## スタイルとスクリプト 埋め込みのスタイルとスクリプトをラップするタグを生成するメソッドが二つあります。 @@ -321,7 +321,7 @@ CSS と同じように、最初の引数はインクルードされるファイ オプションに置いて、`cssFile` のオプションと同じように、`condition` を指定することが出来ます。 -## ハイパーリンク +## ハイパーリンク ハイパーリンクを手軽に生成できるメソッドがあります。 @@ -342,7 +342,7 @@ CSS と同じように、最初の引数はインクルードされるファイ ``` -## 画像 +## 画像 イメージタグを生成するためには次のようにします。 @@ -358,7 +358,7 @@ CSS と同じように、最初の引数はインクルードされるファイ [Url::to()](helper-url.md) と同様です。 -## リスト +## リスト 順序なしリストは、次のようにして生成することが出来ます。 diff --git a/docs/guide-ja/helper-overview.md b/docs/guide-ja/helper-overview.md index e454c110ecc..5c48fc7325f 100644 --- a/docs/guide-ja/helper-overview.md +++ b/docs/guide-ja/helper-overview.md @@ -40,7 +40,7 @@ echo Html::encode('Test > test'); - VarDumper -ヘルパクラスをカスタマイズする +ヘルパクラスをカスタマイズする ------------------------------ コアヘルパクラス (例えば [[yii\helpers\ArrayHelper]]) をカスタマイズするためには、そのヘルパに対応する基底クラス (例えば [[yii\helpers\BaseArrayHelper]]) を拡張するクラスを作成して、名前空間も含めて、対応する具象クラス (例えば [[yii\helpers\ArrayHelper]]) と同じ名前を付けます。 diff --git a/docs/guide-ja/helper-url.md b/docs/guide-ja/helper-url.md index 6d976b1c692..a044d125071 100644 --- a/docs/guide-ja/helper-url.md +++ b/docs/guide-ja/helper-url.md @@ -4,7 +4,7 @@ Url ヘルパ Url ヘルパは URL を管理するための一連のスタティックメソッドを提供します。 -## よく使う URL を取得する +## よく使う URL を取得する よく使う URL を取得するために使うことが出来るメソッドが二つあります。 すなわち、ホーム URL と、現在のリクエストのベース URL を取得するメソッドです。 @@ -31,7 +31,7 @@ $httpsAbsoluteBaseUrl = Url::base('https'); このメソッドの唯一のパラメータは、`Url::home()` の場合と全く同じ動作をします。 -## URL を生成する +## URL を生成する 与えられたルートへの URL を生成するためには、`Url::toRoute()` メソッドを使います。 このメソッドは、[[\yii\web\UrlManager]] を使って URL を生成します。 @@ -150,7 +150,7 @@ echo Url::current(['id' => 100]); ``` -## URL を記憶する +## URL を記憶する URL を記憶して、後に続く一連のリクエストの一つを処理するときに、記憶した URL を使わなければならないという場合があります。 これは、次のようにして達成することが出来ます。 @@ -173,7 +173,7 @@ $url = Url::previous(); $productUrl = Url::previous('product'); ``` -## 相対 URL かどうかチェックする +## 相対 URL かどうかチェックする URL が相対 URL であること、すなわち、URL がホスト情報の部分を持っていないことを確かめるために、次のコードを使うことが出来ます。 diff --git a/docs/guide-ja/input-validation.md b/docs/guide-ja/input-validation.md index 1388e778d14..e9ec1a5023b 100644 --- a/docs/guide-ja/input-validation.md +++ b/docs/guide-ja/input-validation.md @@ -22,7 +22,7 @@ if ($model->validate()) { } ``` -## 規則を宣言する +## 規則を宣言する `validate()` を現実に動作させるためには、検証する予定の属性に対してバリデーション規則を宣言しなければなりません。 規則は [[yii\base\Model::rules()]] メソッドをオーバーライドすることで宣言します。 @@ -89,7 +89,7 @@ public function rules() 属性は、上記のバリデーションのステップに従って、`scenarios()` でアクティブな属性であると宣言されており、かつ、`rules()` で宣言された一つまたは複数のアクティブな規則と関連付けられている場合に、また、その場合に限って、検証されます。 -### エラーメッセージをカスタマイズする +### エラーメッセージをカスタマイズする たいていのバリデータはデフォルトのエラーメッセージを持っていて、属性のバリデーションが失敗した場合にそれを検証の対象であるモデルに追加します。 例えば、[[yii\validators\RequiredValidator|required]] バリデータは、このバリデータを使って `username` 属性を検証したとき、規則に合致しない場合は「ユーザ名は空ではいけません。」というエラーメッセージをモデルに追加します。 @@ -110,7 +110,7 @@ public function rules() これらのエラーメッセージも、バリデータの他のプロパティと同様、バリデーション規則の中で構成することが出来ます。 -### バリデーションのイベント +### バリデーションのイベント [[yii\base\Model::validate()]] は、呼び出されると、バリデーションプロセスをカスタマイズするためにオーバーライドできる二つのメソッドを呼び出します。 @@ -121,7 +121,7 @@ public function rules() このメソッドをオーバーライドするか、または、イベントに反応して、バリデーションが完了した後に、何らかの後処理をすることが出来ます。 -### 条件付きバリデーション +### 条件付きバリデーション 特定の条件が満たされる場合に限って属性を検証したい場合、例えば、ある属性のバリデーションが他の属性の値に依存する場合には、[[yii\validators\Validator::when|when]] プロパティを使って、そのような条件を定義することが出来ます。 例えば、 @@ -160,7 +160,7 @@ function ($model, $attribute) ``` -### データのフィルタリング +### データのフィルタリング ユーザ入力をフィルタまたは前処理する必要があることがよくあります。 例えば、`username` の入力値の前後にある空白を除去したいというような場合です。 @@ -179,7 +179,7 @@ function ($model, $attribute) お分かりかと思いますが、これらのバリデーション規則は実際には入力を検証しません。そうではなくて、検証される属性の値を処理して書き戻すのです。 -### 空の入力値を扱う +### 空の入力値を扱う HTML フォームから入力データが送信されたとき、入力値が空である場合には何らかのデフォルト値を割り当てなければならないことがよくあります。 [default](tutorial-core-validators.md#default) バリデータを使ってそうすることが出来ます。 @@ -212,7 +212,7 @@ HTML フォームから入力データが送信されたとき、入力値が空 [コアバリデータ](tutorial-core-validators.md) の中では、`captcha`、`default`、`filter`、`required`、そして `trim` だけが空の入力値を処理します。 -## アドホックなバリデーション +## アドホックなバリデーション 時として、何らかのモデルに結び付けられていない値に対する *アドホックなバリデーション* を実行しなければならない場合があります。 @@ -275,13 +275,13 @@ public function actionSearch($name, $email) また、このモデルのインスタンスによって定義された動的な属性に対しても、例えば `$model->name` や `$model->email` のようにして、アクセスすることが出来ます。 -## バリデータを作成する +## バリデータを作成する Yii のリリースに含まれている [コアバリデータ](tutorial-core-validators.md) を使う以外に、あなた自身のバリデータを作成することも出来ます。 インラインバリデータとスタンドアロンバリデータを作ることが出来ます。 -### インラインバリデータ +### インラインバリデータ インラインバリデータは、モデルのメソッドまたは無名関数として定義されるバリデータです。 メソッド/関数 のシグニチャは、 @@ -341,7 +341,7 @@ class MyForm extends Model > ``` -### スタンドアロンバリデータ +### スタンドアロンバリデータ スタンドアロンバリデータは、[[yii\validators\Validator]] またはその子クラスを拡張するクラスです。 [[yii\validators\Validator::validateAttribute()]] メソッドをオーバーライドすることによって、その検証ロジックを実装することが出来ます。 @@ -370,7 +370,7 @@ class CountryValidator extends Validator と言うのは、前の二つは、デフォルトでは、`validateValue()` を呼び出すことによって実装されているからです。 -## クライアント側でのバリデーション +## クライアント側でのバリデーション エンドユーザが HTML フォームで値を入力する際には、JavaScript に基づくクライアント側でのバリデーションを提供することが望まれます。 というのは、クライアント側でのバリデーションは、ユーザが入力のエラーを早く見つけることが出来るようにすることによって、より良いユーザ体験を提供するものだからです。 @@ -382,7 +382,7 @@ class CountryValidator extends Validator この理由により、これまでの項で説明したように、常に [[yii\base\Model::validate()]] を呼び出してサーバ側でのバリデーションを実行しなければなりません。 -### クライアント側でのバリデーションを使う +### クライアント側でのバリデーションを使う 多くの [コアバリデータ](tutorial-core-validators.md) は、そのままで、クライアント側でのバリデーションをサポートしています。 あなたがする必要があるのは、[[yii\widgets\ActiveForm]] を使って HTML フォームを作るということだけです。 @@ -441,7 +441,7 @@ class LoginForm extends Model また、個々の入力フィールドごとにクライアント側のバリデーションを無効にしたい場合は、入力フィールドの [[yii\widgets\ActiveField::enableClientValidation]] プロパティを false に設定することも出来ます。 -### クライアント側バリデーションを実装する +### クライアント側バリデーションを実装する クライアント側バリデーションをサポートするバリデータを作成するためには、クライアント側でのバリデーションを実行する JavaScript コードを返す [[yii\validators\Validator::clientValidateAttribute()]] メソッドを実装しなければなりません。 その JavaScript の中では、次の事前定義された変数を使用することが出来ます。 @@ -499,7 +499,7 @@ JS; > ] > ``` -### Deferred バリデーション +### Deferred バリデーション 非同期のクライアント側バリデーションをサポートする必要がある場合は、[Defered オブジェクト](http://api.jquery.com/category/deferred-object/) を作成することが出来ます。 例えば、AJAX によるカスタムバリデーションを実行するために、次のコードを使うことが出来ます。 @@ -575,7 +575,7 @@ JS; ``` -### AJAX バリデーション +### AJAX バリデーション 場合によっては、サーバだけが必要な情報を持っているために、サーバ側でしか検証が実行できないことがあります。 例えば、ユーザ名がユニークであるか否かを検証するためには、サーバ側で user テーブルを調べることが必要になります。 diff --git a/docs/guide-ja/output-data-widgets.md b/docs/guide-ja/output-data-widgets.md index 6e8fd5e841e..546a3530ca1 100644 --- a/docs/guide-ja/output-data-widgets.md +++ b/docs/guide-ja/output-data-widgets.md @@ -188,7 +188,7 @@ Yii によって提供されるカラムクラスを以下で見ていきます - `filterOptions` - `contentOptions` -#### データカラム +#### データカラム データカラムは、データの表示と並べ替えに使用されます。 これがデフォルトのカラムタイプですので、これを使用するときはクラスの指定を省略することが出来ます。 diff --git a/docs/guide-ja/output-formatter.md b/docs/guide-ja/output-formatter.md index 83ec6014fab..f03875781f5 100644 --- a/docs/guide-ja/output-formatter.md +++ b/docs/guide-ja/output-formatter.md @@ -59,7 +59,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // 出力: 2014/01/01 > 64-bit のシステムでは、インストールされていれば、全ての場合に intl フォーマッタが使用されます。 -フォーマッタを構成する +フォーマッタを構成する ---------------------- フォーマットメソッドによって使われるデフォルトの書式は、[[yii\i18n\Formatter|フォーマッタクラス]] のプロパティを使って調整することが出来ます。 @@ -78,7 +78,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // 出力: 2014/01/01 ], ``` -日時の値をフォーマットする +日時の値をフォーマットする -------------------------- フォーマッタクラスは日時の値をフォーマットするさまざまなメソッドを提供しています。すなわち、 @@ -118,7 +118,7 @@ echo Yii::$app->formatter->asDate('now', 'yyyy-MM-dd'); // 2014-10-06 echo Yii::$app->formatter->asDate('now', 'php:Y-m-d'); // 2014-10-06 ``` -### タイムゾーン +### タイムゾーン 日時の値をフォーマットするときに、Yii はその値を [[yii\i18n\Formatter::timeZone|設定されたタイムゾーン]] に変換します。 従って、入力値は、タイムゾーンが明示的に指定されていなければ、UTC であると見なされます。 @@ -140,7 +140,7 @@ echo Yii::$app->formatter->asTime('2014-10-06 21:41:00 JST'); // 21:41:00 > [PHP 環境を国際化のために設定する](tutorial-i18n.md#setup-environment) も参照してください。 -数値をフォーマットする +数値をフォーマットする ---------------------- 数値をフォーマットするために、フォーマッタクラスは次のメソッドを提供しています。 @@ -166,7 +166,7 @@ echo Yii::$app->formatter->asTime('2014-10-06 21:41:00 JST'); // 21:41:00 ] ``` -その他のフォーマッタ +その他のフォーマッタ -------------------- 日付、時刻、そして、数値の他にも、Yii はさまざまな状況で使える一連のフォーマッタを提供しています。 @@ -185,7 +185,7 @@ echo Yii::$app->formatter->asTime('2014-10-06 21:41:00 JST'); // 21:41:00 デフォルトでは、`true` は `Yes`、`false` は `No` とレンダリングされ、現在のアプリケーションの言語に翻訳されます。 この振る舞いは [[yii\i18n\Formatter::booleanFormat]] プロパティを構成して調整できます。 -`null` 値 +`null` 値 --------- PHP において `null` である値に対して、フォーマッタクラスは空文字ではなくプレースホルダを表示します。 diff --git a/docs/guide-ja/rest-authentication.md b/docs/guide-ja/rest-authentication.md index 693921278f4..b04b06590d3 100644 --- a/docs/guide-ja/rest-authentication.md +++ b/docs/guide-ja/rest-authentication.md @@ -105,7 +105,7 @@ class User extends ActiveRecord implements IdentityInterface 認証が失敗したときは、HTTP ステータス 401 およびその他の適切なヘッダ (HTTP Basic 認証に対する `WWW-Authenticate` ヘッダなど) を持つレスポンスが送り返されます。 -## 権限付与 +## 権限付与 ユーザが認証された後、リクエストされたリソースに対してリクエストされたアクションを実行する許可を彼または彼女が持っているかどうかをチェックしたい場合があるでしょう。 *権限付与* と呼ばれるこのプロセスについては、[権限付与](security-authorization.md) のセクションで詳細に説明されています。 diff --git a/docs/guide-ja/rest-controllers.md b/docs/guide-ja/rest-controllers.md index 3ce4112c1c6..f49af49c7a2 100644 --- a/docs/guide-ja/rest-controllers.md +++ b/docs/guide-ja/rest-controllers.md @@ -23,7 +23,7 @@ Yii は、RESTful アクションを作成する仕事を簡単にするため * リクエストされたアクションとリソースに関するユーザへの権限付与 -## コントローラクラスを作成する +## コントローラクラスを作成する 新しいコントローラクラスを作成する場合、コントローラクラスの命名規約は、リソースの型の名前を単数形で使う、というものです。 例えば、ユーザの情報を提供するコントローラは `UserController` と名付けることが出来ます。 @@ -41,7 +41,7 @@ public function actionView($id) ``` -## フィルタ +## フィルタ [[yii\rest\Controller]] によって提供される RESTful API 機能のほとんどは [フィルタ](structure-filters.md) の形で実装されています。 具体的に言うと、次のフィルタがリストされた順に従って実行されます。 @@ -72,13 +72,13 @@ public function behaviors() ``` -## `ActiveController` を拡張する +## `ActiveController` を拡張する コントローラを [[yii\rest\ActiveController]] から拡張する場合は、このコントローラを通じて提供しようとしているリソースクラスの名前を [[yii\rest\ActiveController::modelClass||modelClass]] プロパティにセットしなければなりません。 リソースクラスは [[yii\db\ActiveRecord]] から拡張しなければなりません。 -### アクションをカスタマイズする +### アクションをカスタマイズする デフォルトでは、[[yii\rest\ActiveController]] は次のアクションを提供します。 @@ -116,7 +116,7 @@ public function prepareDataProvider() どういう構成オプションが利用できるかを学ぶためには、個々のアクションクラスのリファレンスを参照してください。 -### アクセスチェックを実行する +### アクセスチェックを実行する RESTful API によってリソースを公開するときには、たいてい、現在のユーザがリクエストしているリソースにアクセスしたり操作したりする許可を持っているか否かをチェックする必要があります。 これは、[[yii\rest\ActiveController]] を使う場合は、[[yii\rest\ActiveController::checkAccess()|checkAccess()]] メソッドを次のようにオーバーライドすることによって出来ます。 diff --git a/docs/guide-ja/rest-error-handling.md b/docs/guide-ja/rest-error-handling.md index b4a30b8e145..9fc65eacaf4 100644 --- a/docs/guide-ja/rest-error-handling.md +++ b/docs/guide-ja/rest-error-handling.md @@ -41,7 +41,7 @@ Content-Type: application/json; charset=UTF-8 * `500`: 内部的サーバエラー。これは内部的なプログラムエラーによって生じ得ます。 -## エラーレスポンスをカスタマイズする +## エラーレスポンスをカスタマイズする 場合によっては、デフォルトのエラーレスポンス形式をカスタマイズしたいことがあるでしょう。 例えば、さまざまな HTTP ステータスを使ってさまざまなエラーを示すという方法によるのではなく、次に示すように、HTTP ステータスとしては常に 200 を使い、実際の HTTP ステータスコードはレスポンスの JSON 構造の一部として包み込む、という方式です。 diff --git a/docs/guide-ja/rest-quick-start.md b/docs/guide-ja/rest-quick-start.md index 5e0901d36dc..35d069abca3 100644 --- a/docs/guide-ja/rest-quick-start.md +++ b/docs/guide-ja/rest-quick-start.md @@ -22,7 +22,7 @@ Yii は、RESTful ウェブサービス API を実装する仕事を簡単にす ユーザのデータは `user` という DB テーブルに保存されており、それにアクセスするための [[yii\db\ActiveRecord|ActiveRecord]] クラス `app\models\User` が既に作成済みであるとします。 -## コントローラを作成する +## コントローラを作成する 最初に、コントローラクラス `app\controllers\UserController` を次のようにして作成します。 @@ -41,7 +41,7 @@ class UserController extends ActiveController [[yii\rest\ActiveController::modelClass|modelClass]] を `app\models\User` と指定することによって、データの取得と操作にどのモデルが使用できるかをコントローラに教えてやります。 -## URL 規則を構成する +## URL 規則を構成する 次に、アプリケーションの構成情報において、`urlManager` コンポーネントに関する構成情報を修正します。 @@ -59,7 +59,7 @@ class UserController extends ActiveController 上記の構成情報は、主として、`user` コントローラの URL 規則を追加して、ユーザのデータが綺麗な URL と意味のある HTTP 動詞によってアクセスおよび操作できるようにするものです。 -## JSON の入力を可能にする +## JSON の入力を可能にする API が JSON 形式で入力データを受け取ることが出来るように、`request` アプリケーションコンポーネントの [[yii\web\Request::$parsers|parsers]] プロパティを構成して、JSON 入力のために [[yii\web\JsonParser]] を使うようにします。 @@ -75,7 +75,7 @@ API が JSON 形式で入力データを受け取ることが出来るように 上記のように構成しない場合は、API は `application/x-www-form-urlencoded` と `multipart/form-data` だけを入力形式として認識します。 -## 試してみる +## 試してみる 上記で示した最小限の労力によって、ユーザのデータにアクセスする RESTful API を作成する仕事は既に完成しています。 作成した API は次のものを含みます。 @@ -185,7 +185,7 @@ Content-Type: application/json; charset=UTF-8 > [レスポンス形式の設定](rest-response-formatting.md) の節で説明されているように、これらのフィールドを除外することは出来ますし、また、除外しなければなりません。 -## まとめ +## まとめ Yii の RESTful API フレームワークを使う場合は、API エンドポイントをコントローラアクションの形式で実装します。 そして、コントローラを使って、単一タイプのリソースに対するエンドポイントを実装するアクションを組織化します。 diff --git a/docs/guide-ja/rest-resources.md b/docs/guide-ja/rest-resources.md index 4cd9d9a6203..fae4de26d99 100644 --- a/docs/guide-ja/rest-resources.md +++ b/docs/guide-ja/rest-resources.md @@ -17,7 +17,7 @@ MVC の枠組の中では、リソースは [models](structure-models.md) とし リソースクラスが [[yii\base\Model]] から拡張しない場合は、全てのパブリックなメンバ変数が返されます。 -## フィールド +## フィールド RESTful API のレスポンスにリソースを含めるとき、リソースは文字列にシリアライズされる必要があります。 Yii はこのプロセスを二つのステップに分けます。 @@ -44,7 +44,7 @@ http://localhost/users?fields=id,email&expand=profile ``` -### fields()` をオーバーライドする +### fields()` をオーバーライドする デフォルトでは、[[yii\base\Model::fields()]] は、モデルの全ての属性をフィールドとして返し、[[yii\db\ActiveRecord::fields()]] は、DB から投入された属性だけを返します。 @@ -91,7 +91,7 @@ public function fields() > および `password_reset_token` を選んで除去しています。 -### `extraFields()` をオーバーライドする +### `extraFields()` をオーバーライドする デフォルトでは、[[yii\base\Model::extraFields()]] は何も返しませんが、[[yii\db\ActiveRecord::extraFields()]] は DB から取得されたリレーションの名前を返します。 @@ -128,7 +128,7 @@ public function extraFields() ``` -## リンク +## リンク [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS) は、Hypermedia as the Engine of Application State (アプリケーション状態のエンジンとしてのハイパーメディア) の略称です。 HATEOAS は、RESTful API は自分が返すリソースについて、どのようなアクションがサポートされているかをクライアントが発見できるような情報を返すべきである、という概念です。 @@ -171,7 +171,7 @@ class User extends ActiveRecord implements Linkable ``` -## コレクション +## コレクション リソースオブジェクトは *コレクション* としてグループ化することが出来ます。 各コレクションは、同じ型のリソースのリストを含みます。 diff --git a/docs/guide-ja/rest-response-formatting.md b/docs/guide-ja/rest-response-formatting.md index e8ea83c4a32..fbf23f20e0d 100644 --- a/docs/guide-ja/rest-response-formatting.md +++ b/docs/guide-ja/rest-response-formatting.md @@ -13,7 +13,7 @@ with response formatting: この作業は、[[yii\web\Response::formatters|response]] アプリケーションコンポーネントに登録された [[yii\web\ResponseFormatterInterface|レスポンスフォーマッタ]] によって実行されます。 -## コンテントネゴシエーション +## コンテントネゴシエーション Yii は [[yii\filters\ContentNegotiator]] フィルタによってコンテントネゴシエーションをサポートします。 RESTful API の基底コントローラクラス [[yii\rest\Controller]] は `contentNegotiator` という名前でこのフィルタを持っています。 @@ -78,7 +78,7 @@ public function behaviors() このレスポンス形式名は、[[yii\web\Response::formatters]] の中でサポートされているものでなければなりません。 -## データのシリアライズ +## データのシリアライズ 上記で説明したように、[[yii\rest\Serializer]] が、リソースのオブジェクトやコレクションを配列に変換する際に、中心的な役割を果たします。 `Serializer` は、[[yii\base\ArrayableInterface]] および [[yii\data\DataProviderInterface]] のインタフェイスを実装したオブジェクトを認識します。 diff --git a/docs/guide-ja/runtime-handling-errors.md b/docs/guide-ja/runtime-handling-errors.md index 67b9402048a..76647c524a4 100644 --- a/docs/guide-ja/runtime-handling-errors.md +++ b/docs/guide-ja/runtime-handling-errors.md @@ -13,7 +13,7 @@ Yii は、エラー処理を従来よりはるかに快適な経験にしてく アプリケーションの [エントリスクリプト](structure-entry-scripts.md) において、定数 `YII_ENABLE_ERROR_HANDLER` を false と定義することによって、これを無効にすることが出来ます。 -## エラーハンドラを使用する +## エラーハンドラを使用する [[yii\web\ErrorHandler|エラーハンドラ]] は `errorHandler` という名前の [アプリケーションコンポーネント](structure-application-components.md) です。 次のように、アプリケーションの構成情報でこれをカスタマイズすることが出来ます。 @@ -56,7 +56,7 @@ throw new NotFoundHttpException(); ``` -## エラー表示をカスタマイズする +## エラー表示をカスタマイズする [[yii\web\ErrorHandler|エラーハンドラ]] は、定数 `YII_DEBUG` の値に従って、エラー表示を調整します。 `YII_DEBUG` が true である (デバッグモードである) 場合は、エラーハンドラは、デバッグがより容易になるように、詳細なコールスタック情報とソースコード行とともに例外を表示します。 @@ -74,7 +74,7 @@ throw new NotFoundHttpException(); エラー表示をカスタマイズするために、エラーハンドラの [[yii\web\ErrorHandler::errorView|errorView]] および [[yii\web\ErrorHandler::exceptionView|exceptionView]] プロパティを構成して、自分自身のビューを使用することが出来ます。 -### エラーアクションを使う +### エラーアクションを使う エラー表示をカスタマイズするためのもっと良い方法は、専用のエラー [アクション](structure-controllers.md) を使うことです。 そうするためには、まず、`errorHandler` コンポーネントの [[yii\web\ErrorHandler::errorAction|errorAction]] プロパティを次のように構成します。 @@ -139,7 +139,7 @@ public function actionError() > Info|情報: あなたが [ベーシックアプリケーションテンプレート](start-installation.md) または [アドバンストアプリケーションテンプレート](tutorial-advanced-app.md) を使っている場合は、エラーアクションとエラービューは、既にあなたのために定義されています。 -### エラーのレスポンス形式をカスタマイズする +### エラーのレスポンス形式をカスタマイズする エラーハンドラは、[レスポンス](runtime-responses.md) の形式の設定に従ってエラーを表示します。 [[yii\web\Response::format|レスポンス形式]] が `html` である場合は、直前の項で説明したように、エラービューまたは例外ビューを使ってエラーを表示します。 diff --git a/docs/guide-ja/runtime-logging.md b/docs/guide-ja/runtime-logging.md index 1f30ffba759..3c25d8eccf2 100644 --- a/docs/guide-ja/runtime-logging.md +++ b/docs/guide-ja/runtime-logging.md @@ -13,7 +13,7 @@ Yii のロギングフレームワークを使うためには、下記のステ この節では、主として最初の二つのステップについて説明します。 -## メッセージを記録する +## メッセージを記録する ログメッセージを記録することは、次のログ記録メソッドのどれかを呼び出すだけの簡単なことです。 @@ -52,7 +52,7 @@ Yii::trace('平均収益の計算を開始', __METHOD__); を呼んで、登録された [ログターゲット](#log-targets) に記録されたログメッセージを送信します。 -## ログターゲット +## ログターゲット ログターゲットは [[yii\log\Target]] クラスまたはその子クラスのインスタンスです。 ログターゲットは、ログメッセージを重大性レベルとカテゴリによってフィルタして、何らかの媒体にエクスポートします。 @@ -109,7 +109,7 @@ Yii は下記のログターゲットをあらかじめ内蔵しています。 以下では、全てのターゲットに共通する機能について説明します。 -### メッセージのフィルタリング +### メッセージのフィルタリング 全てのログターゲットについて、それぞれ、[[yii\log\Target::levels|levels]] と [[yii\log\Target::categories|categories]] のプロパティを構成して、ターゲットが処理すべきメッセージの重要性レベルとカテゴリを指定することが出来ます。 @@ -159,7 +159,7 @@ Yii は下記のログターゲットをあらかじめ内蔵しています。 例えば、[[yii\web\NotFoundHttpException]] は、`yii\web\HttpException:404` というカテゴリのエラーメッセージを発生させます。 -### メッセージの書式設定 +### メッセージの書式設定 ログターゲットはフィルタされたログメッセージを一定の書式でエクスポートします。 例えば、[[yii\log\FileTarget]] クラスのログターゲットをインストールした場合は、`runtime/log/app.log` ファイルに、下記と同様なログメッセージが書き込まれます。 @@ -206,7 +206,7 @@ Yii は下記のログターゲットをあらかじめ内蔵しています。 あるいは、また、コンテキスト情報の提供方法を自分で実装したい場合は、[[yii\log\Target::getContextMessage()]] メソッドをオーバーライドすることも出来ます。 -### メッセージのトレースレベル +### メッセージのトレースレベル 開発段階では、各ログメッセージがどこから来ているかを知りたい場合がよくあります。 これは、次のように、`log` コンポーネントの [[yii\log\Dispatcher::traceLevel|traceLevel]] プロパティを構成することによって達成できます。 @@ -229,7 +229,7 @@ return [ > Info|情報: コールスタック情報の取得は軽微な処理ではありません。従って、この機能は開発時またはアプリケーションをデバッグするときに限って使用するべきです。 -### メッセージの吐き出しとエクスポート +### メッセージの吐き出しとエクスポート 既に述べたように、ログメッセージは [[yii\log\Logger|ロガーオブジェクト]] によって配列の中に保持されます。 この配列のメモリ消費を制限するために、この配列に一定数のログメッセージが蓄積されるたびに、ロガーは記録されたメッセージを [ログターゲット](#log-targets) に吐き出します。 @@ -286,7 +286,7 @@ return [ > Note|注意: 頻繁なメッセージの吐き出しとエクスポートはアプリケーションのパフォーマンスを低下させます。 -### ログターゲットの 有効/無効 を切り替える +### ログターゲットの 有効/無効 を切り替える [[yii\log\Target::enabled|enabled]] プロパティを構成することによって、ログターゲットを有効にしたり無効にしたりすることが出来ます。 この切り替えは、ログターゲットのコンフィギュレーションでも出来ますが、コードの中で次の PHP 文を使っても出来ます。 @@ -316,7 +316,7 @@ return [ ``` -### 新しいターゲットを作る +### 新しいターゲットを作る 新しいログターゲットを作ることは非常に単純なことです。 必要なことは、主として、[[yii\log\Target::messages]] 配列の中身を指定された媒体に送出する [[yii\log\Target::export()]] メソッドを実装することです。 @@ -324,7 +324,7 @@ return [ 詳細については、Yii リリースに含まれているログターゲットクラスのどれか一つを参照してください。 -## パフォーマンスプロファイリング +## パフォーマンスプロファイリング パフォーマンスプロファイリングは、特定のコードブロックに要した時間を測定してパフォーマンスのボトルネックになっている所を見つけ出すために使われる、特殊なタイプのメッセージロギングです。 例えば、[[yii\db\Command]] クラスは、各 DB クエリに要した時間を知るために、パフォーマンスプロファイリングを使用しています。 diff --git a/docs/guide-ja/runtime-requests.md b/docs/guide-ja/runtime-requests.md index 91419c1f855..05c1cf23c9c 100644 --- a/docs/guide-ja/runtime-requests.md +++ b/docs/guide-ja/runtime-requests.md @@ -6,7 +6,7 @@ この節では、アプリケーションの中でこのコンポーネントをどのように利用できるかを説明します。 -## リクエストのパラメータ +## リクエストのパラメータ リクエストのパラメータを取得するためには、`request` コンポーネントの [[yii\web\Request::get()|get()]] および [[yii\web\Request::post()|post()]] メソッドを呼ぶことが出来ます。 これらは、ぞれぞれ、`$_GET` と `$_POST` の値を返します。例えば、 @@ -55,7 +55,7 @@ $param = $request->getBodyParam('id'); [[yii\web\Request::parsers]] プロパティを構成することによって、これらのパラメータが解析される方法をカスタマイズすることが出来ます。 -## リクエストメソッド +## リクエストメソッド 現在のリクエストに使用された HTTP メソッドは、`Yii::$app->request->method` という式によって取得することが出来ます。 現在のメソッドが特定のタイプであるかどうかをチェックするための、一連の真偽値のプロパティも提供されています。 @@ -70,7 +70,7 @@ if ($request->isPost) { // リクエストメソッドは POST } if ($request->isPut) { // リクエストメソッドは PUT } ``` -## リクエストの URL +## リクエストの URL `request` コンポーネントは現在リクエストされている URL を調べるための方法を数多く提供しています。 @@ -88,7 +88,7 @@ if ($request->isPut) { // リクエストメソッドは PUT } * [[yii\web\Request::serverPort|serverPort]]: 80 を返します。ウェブサーバによって使用されているポートです。 -## HTTP ヘッダ +## HTTP ヘッダ [[yii\web\Request::headers]] プロパティによって返される [[yii\web\HeaderCollection|header コレクション]] を通じて、HTTP ヘッダ情報を取得することが出来ます。例えば、 @@ -119,7 +119,7 @@ if ($headers->has('User-Agent')) { // User-Agent ヘッダが在る } このフィルタは、上記で説明したプロパティとメソッドの上に、コンテントネゴシエーションを実装しています。 -## クライアント情報 +## クライアント情報 クライアントマシンのホスト名と IP アドレスを、それぞれ、[[yii\web\Request::userHost|userHost]] と [[yii\web\Request::userIP|userIP]] によって取得することが出来ます。例えば、 diff --git a/docs/guide-ja/runtime-responses.md b/docs/guide-ja/runtime-responses.md index c8a83f15f74..4828c553346 100644 --- a/docs/guide-ja/runtime-responses.md +++ b/docs/guide-ja/runtime-responses.md @@ -12,7 +12,7 @@ この節では、レスポンスを構成してエンドユーザに送信する方法を説明します。 -## ステータスコード +## ステータスコード レスポンスを作成するときに最初にすることの一つは、リクエストが成功裡に処理されたかどうかを記述することです。 そのためには、[[yii\web\Response::statusCode]] プロパティに有効な [HTTP ステータスコード](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) の一つを設定します。 @@ -55,7 +55,7 @@ throw new \yii\web\HttpException(402); ``` -## HTTP ヘッダ +## HTTP ヘッダ `response` コンポーネントの [[yii\web\Response::headers|ヘッダコレクション]] を操作することによって、HTTP ヘッダを送信することが出来ます。 例えば、 @@ -77,7 +77,7 @@ $values = $headers->remove('Pragma'); そして、新しく登録されたヘッダは、[[yii\web\Response::send()]] メソッドが呼ばれるまで送信されません。 -## レスポンスボディ +## レスポンスボディ ほとんどのレスポンスは、エンドユーザに対して表示したい内容を示すボディを持っていなければなりません。 @@ -157,7 +157,7 @@ public function actionInfo() しかし、 [依存の注入](concept-di-container.md) を使えば、 共通の構成情報をあなたの新しいレスポンスオブジェクトに適用することが出来ます。 -## ブラウザのリダイレクト +## ブラウザのリダイレクト ブラウザのリダイレクトは `Location` HTTP ヘッダの送信に依存しています。 この機能は通常よく使われるものであるため、Yii はこれについて特別のサポートを提供しています。 @@ -196,7 +196,7 @@ public function actionOld() 従って、あなたが ([[yii\web\YiiAsset]] アセットバンドルを登録して) この JavaScript ファイルを使うつもりなら、AJAX のリダイレクトをサポートするためには、何も書く必要がなくなります。 -## ファイルを送信する +## ファイルを送信する ブラウザのリダイレクトと同じように、ファイルの送信という機能も特定の HTTP ヘッダに依存しています。 Yii はさまざまなファイル送信の必要をサポートするための一連のメソッドを提供しています。それらはすべて、HTTP range ヘッダに対するサポートを内蔵しています。 @@ -235,7 +235,7 @@ public function actionDownload() - Cherokee: [X-Sendfile and X-Accel-Redirect](http://www.cherokee-project.com/doc/other_goodies.html#x-sendfile) -## レスポンスを送信する +## レスポンスを送信する レスポンスの中のコンテントは、[[yii\web\Response::send()]] メソッドが呼ばれるまでは、エンドユーザに向けて送信されません。 既定では、このメソッドは [[yii\base\Application::run()]] の最後で自動的に呼ばれます。 diff --git a/docs/guide-ja/runtime-routing.md b/docs/guide-ja/runtime-routing.md index 8ff45cb7222..c497d263976 100644 --- a/docs/guide-ja/runtime-routing.md +++ b/docs/guide-ja/runtime-routing.md @@ -33,7 +33,7 @@ $url = Url::to(['post/view', 'id' => 100]); ``` -## URL 形式 +## URL 形式 [[yii\web\UrlManager|URL マネージャ]] は二つの URL 形式、すなわち、デフォルトの URL 形式と、綺麗な URL 形式をサポートします。 @@ -49,7 +49,7 @@ $url = Url::to(['post/view', 'id' => 100]); プロパティを ON/OFF することによって、他のアプリケーションコードを少しも変えることなく、切り替えることが出来ます。 -## ルーティング +## ルーティング ルーティングは二つのステップを含みます。最初のステップでは、入ってくるリクエストが解析されて、ルートとそれに結び付いたクエリパラメータに分解されます。 そして、第二のステップでは、解析されたルートに対応する [コントローラアクション](structure-controllers.md) がリクエストを処理するために生成されます。 @@ -81,7 +81,7 @@ $url = Url::to(['post/view', 'id' => 100]); 上記のステップの中で、何かエラーが発生すると、[[yii\web\NotFoundHttpException]] が投げられて、ルーティングのプロセスが失敗したことが示されます。 -### デフォルトルート +### デフォルトルート リクエストから解析されたルートが空になった場合は、いわゆる *デフォルトルート* が代りに使用されることになります。 既定では、デフォルトルートは `site/index` であり、`site` コントローラの `index` アクションを指します。 @@ -95,7 +95,7 @@ $url = Url::to(['post/view', 'id' => 100]); ``` -### `catchAll` ルート +### `catchAll` ルート たまには、ウェブアプリケーションを一時的にメンテナンスモードにして、全てのリクエストに対して同じ「お知らせ」のページを表示したいことがあるでしょう。 この目的を達する方法はたくさんありますが、最も簡単な方法の一つは、次のように、アプリケーションの構成情報の中で [[yii\web\Application::catchAll]] プロパティを構成することです。 @@ -113,7 +113,7 @@ $url = Url::to(['post/view', 'id' => 100]); [アクションのパラメータ](structure-controllers.md#action-parameters) を指定するものでなければなりません。 -## URL を生成する +## URL を生成する Yii は、与えられたルートとそれに結び付けられるクエリパラメータからさまざまな URL を生成する [[yii\helpers\Url::to()]] というヘルパメソッドを提供しています。例えば、 @@ -215,7 +215,7 @@ echo Url::previous(); ``` -## 綺麗な URL を使う +## 綺麗な URL を使う 綺麗な URL を使うためには、アプリケーションの構成情報の中で `urlManager` コンポーネントを次のように構成します。 @@ -250,7 +250,7 @@ echo Url::previous(); もしあなたが Apache ウェブサーバを使うつもりなら、[インストール](start-installation.md#recommended-apache-configuration) の節で説明されている推奨設定を参照することが出来ます。 -### URL 規則 +### URL 規則 URL 規則は [[yii\web\UrlRule]] またはその子クラスのインスタンスです。 すべての URL 規則は、URL のパス情報の部分との照合に使われるパターン、ルート、そして、いくつかのクエリパラメータから構成されます。 @@ -299,7 +299,7 @@ URL 規則は、「パターン - ルート」のペアとして宣言する以 規則の構成情報で `class` を指定しない場合は、既定として、[[yii\web\UrlRule]] が使われます。 -### 名前付きパラメータ +### 名前付きパラメータ URL 規則は、パターンの中で `` の形式で指定される、いくつかの名前付きクエリパラメータと結び付けることが出来ます。 ここで、`ParamName` はパラメータ名を指定し、`RegExp` はパラメータの値との照合に使われるオプションの正規表現を指定するものです。 @@ -340,7 +340,7 @@ URL 規則は、パターンの中で `` の形式で指定さ どの規則も当てはまらないため、URL は、単純に、ルートをパス情報とし、すべてのパラメータをクエリ文字列として追加して生成されます。 -### ルートをパラメータ化する +### ルートをパラメータ化する URL 規則のルートにはパラメータ名を埋め込むことが出来ます。このことによって、URL 規則を複数のルートに合致させることが可能になっています。 例えば、以下の規則は `controller` と `action` というパラメータをルートに埋め込んでいます。 @@ -388,7 +388,7 @@ URL 規則のルートにはパラメータ名を埋め込むことが出来ま オプション扱いのパラメータを使わなければ、同じ結果を得るために 4 個の規則を作らなければならなかったところです。 -### サーバ名を持つ規則 +### サーバ名を持つ規則 URL 規則のパターンには、ウェブサーバ名を含むことが出来ます。 このことが役に立つのは、主として、あなたのアプリケーションがウェブサーバ名によって異なる動作をしなければならない場合です。 @@ -415,7 +415,7 @@ URL 規則のパターンには、ウェブサーバ名を含むことが出来 こうすれば、アプリケーションをどのようなディレクトリに配置しても、アプリケーションのコードを変更する必要がなくなります。 -### URL 接尾辞 +### URL 接尾辞 さまざまな目的から URL に接尾辞を追加したいことがあるでしょう。 例えば、静的な HTML ページに見えるように、`.html` を URL に追加したいかも知れません。 @@ -473,7 +473,7 @@ URL 規則にこのプロパティが設定されている場合は、それが ``` -### HTTP メソッド +### HTTP メソッド RESTful API を実装するときは、使用されている HTTP メソッドに応じて、同一の URL を異なるルートとして解析することが必要になる場合がよくあります。 これは、規則のパターンにサポートされている HTTP メソッドを前置することによって、簡単に達成することが出来ます。 @@ -497,7 +497,7 @@ RESTful API を実装するときは、使用されている HTTP メソッド 詳細については、RESTful API 開発についての [ルーティング](rest-routing.md) の節を参照してください。 -### 規則をカスタマイズする +### 規則をカスタマイズする これまでの例では、URL 規則は主として「パターン - ルート」のペアの形で宣言されています。これが通常使用される短縮形式です。 特定のシナリオの下では、[[yii\web\UrlRule::suffix]] などのような、他のプロパティを構成して URL 規則をカスタマイズしたいこともあるでしょう。 @@ -519,7 +519,7 @@ RESTful API を実装するときは、使用されている HTTP メソッド > Info|情報: 規則の構成情報で `class` を指定しない場合は、既定として、[[yii\web\UrlRule]] クラスが使われます。 -### 規則を動的に追加する +### 規則を動的に追加する URL 規則は [[yii\web\UrlManager|URL マネージャ]] に動的に追加することが出来ます。 このことは、再配布可能な [モジュール](structure-modules.md) が自分自身の URL 規則を管理する必要がある場合に、しばしば必要になります。 @@ -538,7 +538,7 @@ public function bootstrap($app) さらに、モジュールが [ブートストラップ](runtime-bootstrapping.md) の過程に関与できるように、それを [[yii\web\Application::bootstrap]] のリストに挙げなければならないことに注意してください。 -### 規則クラスを作成する +### 規則クラスを作成する デフォルトの [[yii\web\UrlRule]] クラスはほとんどのプロジェクトに対して十分に柔軟なものであるというのは事実ですが、それでも、自分自身で規則クラスを作る必要があるような状況はあります。 例えば、自動車ディーラーのウェブサイトにおいて、`/Manufacturer/Model` のような URL 形式をサポートしたいけれども、`Manufacturer` と `Model` は、両方とも、データベーステーブルに保存されている何らかのデータに合致するものでなければならない、というような場合です。 @@ -595,7 +595,7 @@ class CarUrlRule extends Object implements UrlRuleInterface ``` -## パフォーマンスに対する考慮 +## パフォーマンスに対する考慮 複雑なウェブアプリケーションを開発するときは、リクエストの解析と URL 生成に要する時間を削減するために URL 規則を最適化することが重要になります。 diff --git a/docs/guide-ja/runtime-sessions-cookies.md b/docs/guide-ja/runtime-sessions-cookies.md index 120e2544c28..a31112e7745 100644 --- a/docs/guide-ja/runtime-sessions-cookies.md +++ b/docs/guide-ja/runtime-sessions-cookies.md @@ -6,12 +6,12 @@ Yii はセッションとクッキーをオブジェクトとしてカプセル化し、オブジェクト指向の流儀でアクセスできるようにするとともに、有用な機能強化を追加しています。 -## セッション +## セッション [リクエスト](runtime-requests.md) や [レスポンス](runtime-responses.md) と同じように、既定では [[yii\web\Session]] のインスタンスである `session` [アプリケーションコンポーネント] によって、セッションにアクセスすることが出来ます。 -### セッションのオープンとクローズ +### セッションのオープンとクローズ セッションのオープンとクローズは、次のようにして出来ます。 @@ -35,7 +35,7 @@ $session->destroy(); 内部的には、これらのメソッドは、セッションが既に開かれているかどうかを最初にチェックします。 -### セッションデータにアクセスする +### セッションデータにアクセスする セッションに保存されているデータにアクセスするためには、次のようにすることが出来ます。 @@ -119,7 +119,7 @@ $session['captcha.lifetime'] = 3600; すなわち、配列を一つのセッション変数として保存する代りに、配列の個々の要素を他の要素と同じキー接頭辞を共有する一つのセッション変数として保存することです。 -### カスタムセッションストレージ +### カスタムセッションストレージ 既定の [[yii\web\Session]] クラスはセッションデータをサーバ上のファイルとして保存します。 Yii は、また、さまざまなセッションストレージを実装する下記のクラスをも提供しています。 @@ -171,7 +171,7 @@ CREATE TABLE session 例えば、`session.hash_function=sha256` である場合は、40 の代りに 64 の長さを使わなければなりません。 -### フラッシュデータ +### フラッシュデータ フラッシュデータは特殊な種類のセッションデータで、あるリクエストの中で設定されると、次のリクエストの間においてのみ読み出すことが出来て、その後は自動的に削除されるものです。 フラッシュデータが最もよく使われるのは、エンドユーザに一度だけ表示されるべきメッセージ、例えば、ユーザのフォーム送信が成功した後に表示される確認メッセージなどを実装するときです。 @@ -219,14 +219,14 @@ $alerts = $session->getFlash('alerts'); その結果、[[yii\web\Session::getFlash()]] を呼び出したとき、この二つのメソッドの呼び出し順によって、あるときは配列を受け取り、あるときは文字列を受け取るということになってしまいます。 -## クッキー +## クッキー Yii は個々のクッキーを [[yii\web\Cookie]] のオブジェクトとして表します。 [[yii\web\Request]] と [[yii\web\Response]] は、ともに、`cookies` という名前のプロパティによって、クッキーのコレクションを保持します。 後者のクッキーコレクションはリクエストの中で送信されたクッキーを表し、一方、後者のクッキーコレクションは、ユーザに送信されることになるクッキーを表します。 -### クッキーを読み出す +### クッキーを読み出す 現在のリクエストに含まれるクッキーは、下記のコードを使って取得することが出来ます。 @@ -253,7 +253,7 @@ if (isset($cookies['language'])) ... ``` -### クッキーを送信する +### クッキーを送信する 下記のコードを使って、クッキーをエンドユーザに送信することが出来ます。 @@ -281,7 +281,7 @@ unset($cookies['language']); これは、クライアントサイドスクリプトが保護されたクッキーにアクセスする危険を軽減するものです (ブラウザがサポートしていれば)。 詳細については、[httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) を読んでください。 -### クッキー検証 +### クッキー検証 最後の二つの項で示されているように、`request` と `response` のコンポーネントを通じてクッキーを読んだり送信したりする場合には、クッキーがクライアントサイドで修正されるのを防止するクッキー検証という追加のセキュリティを享受することが出来ます。 これは、個々のクッキーにハッシュ文字列をサインとして追加することによって達成されます。 diff --git a/docs/guide-ja/start-databases.md b/docs/guide-ja/start-databases.md index 934e5d7438c..dadd29a09e6 100644 --- a/docs/guide-ja/start-databases.md +++ b/docs/guide-ja/start-databases.md @@ -15,7 +15,7 @@ 具体的に言えば、DB クライアントツールを用いてデータベースを作成する方法と、SQL 文を実行する方法を知っていなければなりません。 -データベースを準備する +データベースを準備する ---------------------- まず初めに、`yii2basic` という名前のデータベースを作成してください。このデータベースからアプリケーションにデータを読み出すことになります。 @@ -47,7 +47,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); この時点で、あなたは `yii2basic` という名前のデータベースを持ち、その中に三つのカラムを持つ `country` というテーブルがあり、`country` テーブルは 10 行のデータを持っている、ということになります。 -DB 接続を構成する +DB 接続を構成する ----------------- 先に進む前に、[PDO](http://www.php.net/manual/en/book.pdo.php) PHP 拡張および使用しているデータベースの PDO ドライバ (例えば、MySQL のための `pdo_mysql`) の両方をインストール済みであることを確認してください。 @@ -78,7 +78,7 @@ return [ 詳しい情報については、[構成情報](concept-configurations.md) の節を参照してください。 -アクティブレコードを作成する +アクティブレコードを作成する ---------------------------- `country` テーブルの中のデータを表現し取得するために、[アクティブレコード](db-active-record.md) から派生した `Country` という名前のクラスを作成し、それを `models/Country.php` というファイルに保存します。 @@ -124,7 +124,7 @@ $country->save(); もう一つの方法として、[データアクセスオブジェクト](db-dao.md) と呼ばれる、より低レベルなデータアクセス方法を使ってデータベースを操作することも出来ます。 -アクションを作成する +アクションを作成する -------------------- 国データをエンドユーザに公開するために、新しいアクションを作成する必要があります。 @@ -179,7 +179,7 @@ class CountryController extends Controller このとき、国データだけでなく、そのページネーション情報がビューに渡されます。 -ビューを作成する +ビューを作成する ---------------- 最初に、`views` ディレクトリの下に `country` という名前のサブディレクトリを作ってください。 @@ -210,7 +210,7 @@ use yii\widgets\LinkPager; `LinkPager` ウィジェットはページボタンのリストを表示します。ボタンのどれかをクリックすると、対応するページの国データが更新表示されます。 -試してみる +試してみる ---------- 上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします。 @@ -242,7 +242,7 @@ http://hostname/index.php?r=country/index&page=2 こうして、新しい国のクエリは `LIMIT 5 OFFSET 5` という句を持ち、次の5つの国を表示のために返すことになります。 -まとめ +まとめ ------ この節では、データベースを扱う方法を学びました。 diff --git a/docs/guide-ja/start-forms.md b/docs/guide-ja/start-forms.md index 8423ea42b4b..dcf3c6888fd 100644 --- a/docs/guide-ja/start-forms.md +++ b/docs/guide-ja/start-forms.md @@ -14,7 +14,7 @@ * [ビュー](structure-views.md) の中で HTML フォームを構築する方法 -モデルを作成する +モデルを作成する ---------------- ユーザに入力してもらうデータは、下に示されているように `EntryForm` モデルクラスとして表現され、`models/EntryForm.php` というファイルに保存されます。 @@ -74,7 +74,7 @@ if ($model->validate()) { ``` -アクションを作成する +アクションを作成する -------------------- 次に、この新しいモデルを使う `entry` アクションを `site` コントローラに作る必要があります。 @@ -127,7 +127,7 @@ class SiteController extends Controller 実際の仕事では、[フォーム送信の諸問題](http://en.wikipedia.org/wiki/Post/Redirect/Get) を避けるために、[[yii\web\Controller::refresh()|refresh()]] または [[yii\web\Controller::redirect()|redirect()]] を使うことを考慮すべきです。 -ビューを作成する +ビューを作成する ---------------- 最後に、`entry-confirm` と `entry` という名前の二つのビューファイルを作成します。 @@ -174,7 +174,7 @@ use yii\widgets\ActiveForm; インプットフィールドの後に、[[yii\helpers\Html::submitButton()]] メソッドが呼ばれて、送信ボタンを生成しています。 -試してみる +試してみる ---------- どのように動作するかを見るために、ブラウザで下記の URL をアクセスしてください。 @@ -194,7 +194,7 @@ http://hostname/index.php?r=site/entry ![データ入力の確認](images/start-entry-confirmation.png) -### 魔法の説明 +### 魔法の説明 あなたは、舞台裏で HTML フォームがどのように動いているのか、不思議に思うかも知れません。 なぜなら、フォームが、ほとんど魔法のように、各インプットフィールドのラベルを表示し、データを正しく入力しなかった場合には、ページをリロードすることなく、エラーメッセージを表示するからです。 @@ -222,7 +222,7 @@ http://hostname/index.php?r=site/entry あなたは、将来のビュー開発を単純化するために、多くのビューコードを再利用可能なウィジェットに変換したいと思うことでしょう。 -まとめ +まとめ ------ ガイドのこの節においては、MVC デザインパターンの全ての部分に触れました。 diff --git a/docs/guide-ja/start-gii.md b/docs/guide-ja/start-gii.md index ed491403a85..1fdd8c98097 100644 --- a/docs/guide-ja/start-gii.md +++ b/docs/guide-ja/start-gii.md @@ -12,7 +12,7 @@ Gii を使ってコードを自動生成することは、Gii のウェブペー * Gii によって生成されるコードをカスタマイズする方法 -Gii を開始する +Gii を開始する -------------- [Gii](tool-gii.md) は Yii の [モジュール](structure-modules.md) として提供されています。 @@ -57,7 +57,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -アクティブレコードのクラスを生成する +アクティブレコードのクラスを生成する ------------------------------------ Gii を使ってアクティブレコードのクラスを生成するためには、"Model Generator" を選びます @@ -84,7 +84,7 @@ Gii を使うときに、既に同じファイルを作成していて、それ 既存のファイルがあった場合は、それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。 -CRUD コードを生成する +CRUD コードを生成する --------------------- CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、ほとんどのウェブサイトでデータを扱うときによく用いられる4つのタスクを表しています。 @@ -106,7 +106,7 @@ Gii を使って CRUD 機能を作成するためには、"CRUD Generator" を (以前のバージョンは フル機能の CRUD をサポートしていません。) -試してみる +試してみる ---------- どのように動作するかを見るために、ブラウザを使って下記の URL にアクセスしてください。 @@ -137,7 +137,7 @@ http://hostname/index.php?r=country/index 詳細については、[Gii](tool-gii.md) の節を参照してください。 -まとめ +まとめ ------ この節では、Gii を使ってコードを生成して、データベーステーブルに保存されているコンテントのための完全な CRUD 機能を実装する方法を学びました。 diff --git a/docs/guide-ja/start-hello.md b/docs/guide-ja/start-hello.md index 6161ec88cb2..9d65b4551b9 100644 --- a/docs/guide-ja/start-hello.md +++ b/docs/guide-ja/start-hello.md @@ -14,7 +14,7 @@ 3. アプリケーションがリクエストを [アクション](structure-controllers.md#creating-actions) に送付する仕組み -アクションを作成する +アクションを作成する -------------------- 「こんにちは」のタスクのために、リクエストから `message` パラメータを読んで、そのメッセージをユーザに表示して返す `say` [アクション](structure-controllers.md#creating-actions) を作ります。 @@ -68,7 +68,7 @@ Yii はコントローラクラスの中で、アクションのメソッドと 返された結果はアプリケーションによって受け取られ、ブラウザ上でエンドユーザに (完全な HTML ページの一部として) 表示されます。 -ビューを作成する +ビューを作成する ---------------- [ビュー](structure-views.md) は、レスポンスのコンテントを生成するために書かれるスクリプトです。 @@ -94,7 +94,7 @@ use yii\helpers\Html; そしてアプリケーションがこの結果をエンドユーザに対して出力します。 -試してみる +試してみる ---------- アクションとビューを作成したら、下記の URL で新しいページにアクセスすることが出来ます。 @@ -129,7 +129,7 @@ URL から `message` パラメータを省略すると、"こんにちは" を 例えば、`post-comment` というコントローラ ID に対応するコントローラクラスの名前は `PostCommentController` です。 -まとめ +まとめ ------ この節では、MVC デザインパターンのうちのコントローラとビューの部分に触れました。 diff --git a/docs/guide-ja/start-installation.md b/docs/guide-ja/start-installation.md index 0b459519893..d3bae034be8 100644 --- a/docs/guide-ja/start-installation.md +++ b/docs/guide-ja/start-installation.md @@ -18,7 +18,7 @@ Yii はもう一つ、[アドバンストアプリケーションテンプレー あなたが Yii は初めてだという場合は、シンプルでありながら十分な機能を持っているベーシックアプリケーションテンプレートに留まることを強く推奨します。 -Composer によるインストール +Composer によるインストール --------------------------- まだ Composer をインストールしていない場合は、[getcomposer.org](https://getcomposer.org/download/) の指示に従ってインストールすることが出来ます。 @@ -56,7 +56,7 @@ Composer がインストールされたら、ウェブからアクセスでき > 開発バージョンは動いているあなたのコードを動かなくするかもしれませんので、本番環境では使うべきでないことに注意してください。 -アーカイブファイルからインストールする +アーカイブファイルからインストールする -------------------------------------- アーカイブファイルから Yii をインストールするには、三つの手順を踏みます。 @@ -72,7 +72,7 @@ Composer がインストールされたら、ウェブからアクセスでき ``` -他のインストールオプション +他のインストールオプション -------------------------- 上記のインストール方法の説明は Yii のインストールの仕方を示すものですが、それは同時に、直ちに動作する基本的なウェブアプリケーションを作成するものでもあります。 @@ -87,7 +87,7 @@ Composer がインストールされたら、ウェブからアクセスでき をインストールすることを考慮することが出来ます。 -インストールを検証する +インストールを検証する ---------------------- インストール完了後、インストールされた Yii アプリケーションにブラウザを使って下記の URL でアクセスすることが出来ます。 @@ -119,7 +119,7 @@ Yii の最低必要条件を満たすように PHP のインストールを構 また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベースドライバ (MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。 -ウェブサーバを構成する +ウェブサーバを構成する ---------------------- > Info|情報: もし Yii の試運転をしているだけで、本番サーバに配備する意図がないのであれば、当面、この項は飛ばしても構いません。 @@ -140,7 +140,7 @@ Yii 2.0 は、また、facebook の [HHVM](http://hhvm.com/) とも互換性が 詳細については、[共有ホスティング環境](tutorial-shared-hosting.md) の節を参照してください。 -### 推奨される Apache の構成 +### 推奨される Apache の構成 下記の設定を Apache の `httpd.conf` ファイルまたはバーチャルホスト設定の中で使います。 `path/to/basic/web` の部分を `basic/web` の実際のパスに置き換えなければならないことに注意してください。 @@ -163,7 +163,7 @@ DocumentRoot "path/to/basic/web" ``` -### 推奨される Nginx の構成 +### 推奨される Nginx の構成 [Nginx](http://wiki.nginx.org/) を使うためには、PHP を [FPM SAPI](http://jp1.php.net/install.fpm) としてインストールしなければなりません。 下記の Nginx の設定を使うことができます。 diff --git a/docs/guide-ja/start-workflow.md b/docs/guide-ja/start-workflow.md index f01b0a4c513..df21d4002a4 100644 --- a/docs/guide-ja/start-workflow.md +++ b/docs/guide-ja/start-workflow.md @@ -10,7 +10,7 @@ Yii のインストールが終ると、実際に動く Yii のアプリケー 必要に応じて、説明の中の URL を読み替えてください。 -機能 +機能 ---- インストールされた基本的なアプリケーションは四つのページを持っています。 @@ -29,7 +29,7 @@ Yii のインストールが終ると、実際に動く Yii のアプリケー これは Yii によって提供される便利な [デバッグツールバー](tool-debugger.md) であり、たくさんのデバッグ情報、例えば、ログメッセージ、レスポンスのステータス、実行されたデータベースクエリなどを記録して表示するものです。 -アプリケーションの構造 +アプリケーションの構造 ---------------------- アプリケーションにとって最も重要なディレクトリとファイルは (アプリケーションのルートディレクトリが `basic` だと仮定すると) 以下の通りです。 @@ -70,7 +70,7 @@ Yii は [モデル・ビュー・コントローラ (MVC)](http://wikipedia.org/ [ウィジェット](structure-widgets.md) は、複雑で動的なユーザインタフェイス要素を構築するために、[ビュー](structure-views.md) の中で使われます。 -リクエストのライフサイクル +リクエストのライフサイクル -------------------------- 次の図は、アプリケーションがどのようにリクエストを処理するかを示すものです。 diff --git a/docs/guide-ja/structure-application-components.md b/docs/guide-ja/structure-application-components.md index 1a74a1be67c..1ccf5744faf 100644 --- a/docs/guide-ja/structure-application-components.md +++ b/docs/guide-ja/structure-application-components.md @@ -50,7 +50,7 @@ 多くの場合、必要なときにローカルなコンポーネントを作成して使用するだけで十分です。 -## コンポーネントをブートストラップに含める +## コンポーネントをブートストラップに含める 上述のように、アプリケーションコンポーネントは最初にアクセスされた時に初めてインスタンスが作成されます。 リクエストの間に全くアクセスされなかった時は、インスタンスは作成されません。 @@ -73,7 +73,7 @@ ``` -## コアアプリケーションコンポーネント +## コアアプリケーションコンポーネント Yii は固定の ID とデフォルトの構成情報を持つ一連の *コア* アプリケーションコンポーネントを定義しています。 例えば、[[yii\web\Application::request|request]] コンポーネントは、ユーザリクエストに関する情報を収集して、それを [ルート](runtime-routing.md) として解決するために使用されます。 diff --git a/docs/guide-ja/structure-applications.md b/docs/guide-ja/structure-applications.md index e4d5c7768ef..797bbd95471 100644 --- a/docs/guide-ja/structure-applications.md +++ b/docs/guide-ja/structure-applications.md @@ -10,7 +10,7 @@ 名前が示すように、前者は主にウェブのリクエストを処理し、後者はコンソールコマンドのリクエストを処理します。 -## アプリケーションの構成情報 +## アプリケーションの構成情報 [エントリスクリプト](structure-entry-scripts.md) は、アプリケーションを作成するときに、下記のように、[構成情報](concept-configurations.md) を読み込んで、それをアプリケーションに適用します。 @@ -30,7 +30,7 @@ $config = require(__DIR__ . '/../config/web.php'); アプリケーションの構成情報は、たいていは非常に複雑なものですから、通常は、上記の例の `web.php` ファイルのように、[構成情報ファイル](concept-configurations.md#configuration-files) に保管されます。 -## アプリケーションのプロパティ +## アプリケーションのプロパティ アプリケーションの構成情報で構成すべき重要なアプリケーションのプロパティは数多くあります。 それらのプロパティの典型的なものは、アプリケーションが走る環境を記述するものです。 @@ -38,20 +38,20 @@ $config = require(__DIR__ . '/../config/web.php'); 以下において、それらのプロパティを要約します。 -### 必須のプロパティ +### 必須のプロパティ どのアプリケーションでも、最低二つのプロパティは構成しなければなりません。 すなわち、[[yii\base\Application::id|id]] と [[yii\base\Application::basePath|basePath]] です。 -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] [[yii\base\Application::id|id]] プロパティは、アプリケーションを他のアプリケーションから区別するユニークな ID を規定します。 このプロパティは主としてプログラム的に使われます。 必須ではありませんが、最良の相互運用性を確保するために、アプリケーション ID を指定するときに英数字だけを使うことが推奨されます。 -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] [[yii\base\Application::basePath|basePath]] プロパティは、アプリケーションのルートディレクトリを規定します。 これは、アプリケーションシステムの全ての保護されたソースコードを収容するディレクトリです。 @@ -68,12 +68,12 @@ $config = require(__DIR__ . '/../config/web.php'); (例えば、runtime ディレクトリを示す `@app/runtime` など)。 -### 重要なプロパティ +### 重要なプロパティ この項で説明するプロパティは、アプリケーションごとに異なってくるものであるため、たいてい、構成する必要が生じます。 -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] このプロパティを使って、配列形式で一連の [エイリアス](concept-aliases.md) を定義することが出来ます。 配列のキーがエイリアスの名前であり、配列の値が対応するパスの定義です。 @@ -91,7 +91,7 @@ $config = require(__DIR__ . '/../config/web.php'); このプロパティが提供されているのは、[[Yii::setAlias()]] メソッドを呼び出す代りに、アプリケーションの構成情報を使ってエイリアスを定義することが出来るようにするためです。 -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] これは非常に有用なプロパティです。 これによって、アプリケーションの [[yii\base\Application::bootstrap()|ブートストラップの過程]] において走らせるべきコンポーネントを配列として指定することが出来ます。 @@ -162,7 +162,7 @@ if (YII_ENV_DEV) { ですから、ブートストラップコンポーネントは賢く使ってください。 -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] このプロパティは [[yii\web\Application|ウェブアプリケーション]] においてのみサポートされます。 これは、全てのユーザリクエストを処理すべき [コントローラアクション](structure-controllers.md) を指定するものです。 @@ -183,7 +183,7 @@ if (YII_ENV_DEV) { ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] これこそが、唯一最重要なプロパティです。 これによって、[アプリケーションコンポーネント](structure-application-components.md) と呼ばれる一連の名前付きのコンポーネントを登録して、それらを他の場所で使うことが出来るようになります。 @@ -212,7 +212,7 @@ if (YII_ENV_DEV) { 詳細は [アプリケーションコンポーネント](structure-application-components.md) の節を読んでください。 -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] このプロパティは、コントローラ ID を任意のコントローラクラスに割り付けることを可能にするものです。 既定では、Yii は [規約](#controllerNamespace) に基づいてコントローラ ID をコントローラクラスに割り付けます @@ -237,7 +237,7 @@ if (YII_ENV_DEV) { このプロパティの配列のキーはコントローラ ID を表し、配列の値は対応するコントローラクラスの名前または [構成情報](concept-configurations.md) を表します。 -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] このプロパティは、コントローラクラスが配置されるべき既定の名前空間を指定するものです。 デフォルト値は `app\controllers` です。 @@ -254,7 +254,7 @@ if (YII_ENV_DEV) { 上述の規約を破りたい場合は、[controllerMap](#controllerMap) プロパティを構成することが出来ます。 -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] このプロパティは、アプリケーションがコンテンツをエンドユーザに表示するときに使うべき言語を規定します。 このプロパティのデフォルト値は `en` であり、英語を意味します。 @@ -269,7 +269,7 @@ if (YII_ENV_DEV) { このプロパティに関する詳細は [国際化](tutorial-i18n.md) の節で読むことが出来ます。 -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] このプロパティはアプリケーションが含む [モジュール](structure-modules.md) を規定します。 @@ -294,7 +294,7 @@ if (YII_ENV_DEV) { 詳細は [モジュール](structure-modules.md) の節を参照してください。 -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] このプロパティはアプリケーション名を規定します。これは、エンドユーザに対して表示されるかも知れません。[[yii\base\Application::id|id]] プロパティがユニークな値でなければならないのとは違って、このプロパティの値は主として表示目的であり、ユニークである必要はありません。 @@ -302,7 +302,7 @@ if (YII_ENV_DEV) { コードで使わないのであれば、このプロパティを構成する必要はありません。 -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] このプロパティは、グローバルにアクセス可能なアプリケーションパラメータの配列を規定します。 コードの中のいたる処でハードコードされた数値や文字列を使う代りに、それらをアプリケーションパラメータとして一ヶ所で定義し、必要な場所ではそのパラメータを使うというのが良いプラクティスです。 @@ -326,7 +326,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 後でサムネールのサイズを変更すると決めたときは、アプリケーションの構成情報においてのみサイズを修正すればよく、これに依存するコードには少しも触れる必要がありません。 -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] このプロパティはアプリケーションコードが書かれている言語を規定します。デフォルト値は`'en-US'`、アメリカ合衆国の英語です。 あなたのコードのテキスト内容が英語以外で書かれているときは、このプロパティを構成すべきです。 @@ -337,7 +337,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; このプロパティに関する詳細は [国際化](tutorial-i18n.md) の節で読むことが出来ます。 -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] このプロパティは、PHP ランタイムのデフォルトタイムゾーンを設定する代替手段として提供されています。 このプロパティを構成すると、本質的には PHP 関数 [date_default_timezone_set()](http://php.net/manual/ja/function.date-default-timezone-set.php) を呼ぶことになります。 @@ -350,25 +350,25 @@ $width = \Yii::$app->params['thumbnail.size'][0]; ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] このプロパティはアプリケーションのバージョンを規定します。デフォルト値は `'1.0'` です。 コードの中で使わないのであれば、必ずしも構成する必要はありません。 -### 有用なプロパティ +### 有用なプロパティ この項で説明されるプロパティは通常は構成されません。というのは、そのデフォルト値が通常の規約を指定しているからです。 しかしながら、規約を破る必要がある場合には、これらのプロパティを構成することが出来ます。 -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] このプロパティはアプリケーションが使う文字セットを規定します。 デフォルト値は `'UTF-8'` であり、あなたのアプリケーションが多数の非ユニコードデータを使うレガシーシステムと連携するのでなければ、そのままにしておくべきです。 -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] このプロパティは、リクエストがルートを指定していないときにアプリケーションが使用すべき [ルート](runtime-routing.md) を規定します。 ルートは、チャイルドモジュール ID、コントローラ ID、および/または アクション ID を構成要素とすることが出来ます。 @@ -383,7 +383,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 結果として、引数を与えずに `yii` というコマンドを走らせると、ヘルプ情報が表示されることになります。 -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] このプロパティは、アプリケーションにインストールされて使われる [エクステンション](structure-extensions.md) を規定するリストです。 デフォルトでは、`@vendor/yiisoft/extensions.php` というファイルによって返される配列を取ります。 @@ -417,7 +417,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; の配列によって規定することが出来ます。また、エクステンションはいくつかの [エイリアス](concept-aliases.md) を定義することも出来ます。 -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] このプロパティは、[ビュー](structure-views.md) をレンダリングするときに使われるべきデフォルトのレイアウトを規定します。 デフォルト値は `'main'` であり、[レイアウトパス](#layoutPath) の下にある `main.php` というファイルが使われるべき事を意味します。 @@ -427,7 +427,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 滅多には無いことですが、レイアウトをデフォルトで無効にしたい場合は、このプロパティを `false` として構成することが出来ます。 -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] このプロパティは、レイアウトファイルが捜されるべきパスを規定します。 デフォルト値は、[ビューパス](#viewPath) の下の `layouts` サブディレクトリです。 @@ -436,7 +436,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; このプロパティはディレクトリまたはパス [エイリアス](concept-aliases.md) として構成することが出来ます。 -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] このプロパティは、ログファイルやキャッシュファイルなどの一時的ファイルを生成することが出来るパスを規定します。 デフォルト値は、`@app/runtime` というエイリアスで表現されるディレクトリです。 @@ -448,14 +448,14 @@ $width = \Yii::$app->params['thumbnail.size'][0]; このパスに簡単にアクセスできるように、Yii は `@runtime` というパスエイリアスを事前に定義しています。 -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] このプロパティはビューファイルが配置されるルートディレクトリを規定します。 デフォルト値は、`@app/views` というエイリアスで表現されるディレクトリです。 このプロパティはディレクトリまたはパス [エイリアス](concept-aliases.md) として構成することが出来ます。 -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] このプロパティは、[Composer](http://getcomposer.org) によって管理される vendor ディレクトリを規定します。 Yii フレームワークを含めて、あなたのアプリケーションによって使われる全てのサードパーティライブラリを格納するディレクトリです。 @@ -467,13 +467,13 @@ Yii フレームワークを含めて、あなたのアプリケーションに このパスに簡単にアクセスできるように、Yii は `@vendor` というパスエイリアスを事前に定義しています。 -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] このプロパティは [[yii\console\Application|コンソールアプリケーション]] においてのみサポートされています。 Yii リリースに含まれているコアコマンドを有効にすべきか否かを規定します。デフォルト値は `true` です。 -## アプリケーションのイベント +## アプリケーションのイベント アプリケーションはリクエストを処理するライフサイクルの中でいくつかのイベントをトリガします。 これらのイベントに対して、下記のようにして、アプリケーションの構成情報の中でイベントハンドラをアタッチすることが出来ます。 @@ -497,7 +497,7 @@ Yii リリースに含まれているコアコマンドを有効にすべきか }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] このイベントは、アプリケーションがリクエストを処理する *前* にトリガされます。 実際のイベント名は `beforeRequest` です。 @@ -507,7 +507,7 @@ Yii リリースに含まれているコアコマンドを有効にすべきか 例えば、このイベントハンドラの中で、何らかのパラメータに基づいて [[yii\base\Application::language]] プロパティを動的にセットすることが出来ます。 -### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] このイベントは、アプリケーションがリクエストの処理を完了した *後*、レスポンスを送信する *前* にトリガされます。 実際のイベント名は `afterRequest` です。 @@ -518,7 +518,7 @@ Yii リリースに含まれているコアコマンドを有効にすべきか それらのイベントは、このイベントの *後* にトリガされます。 -### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] このイベントは、[コントローラアクション](structure-controllers.md) を走らせる *前* に毎回トリガされます。 実際のイベント名は `beforeAction` です。 @@ -543,7 +543,7 @@ Yii リリースに含まれているコアコマンドを有効にすべきか イベントハンドラが [[yii\base\ActionEvent::isValid]] を `false` にセットすると、後続のイベントはトリガされません。 -### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] このイベントは、[コントローラアクション](structure-controllers.md) が走った *後* に毎回トリガされます。 実際のイベント名は `afterAction` です。 @@ -568,7 +568,7 @@ Yii リリースに含まれているコアコマンドを有効にすべきか すなわち、コントローラオブジェクトが最初にこのイベントをトリガし、次に (もし有れば) モジュールが、そして最後にアプリケーションがこのイベントをトリガします。 -## アプリケーションのライフサイクル +## アプリケーションのライフサイクル ![アプリケーションのライフサイクル](images/application-lifecycle.png) diff --git a/docs/guide-ja/structure-assets.md b/docs/guide-ja/structure-assets.md index 053ffa4cc5f..f742e7fd961 100644 --- a/docs/guide-ja/structure-assets.md +++ b/docs/guide-ja/structure-assets.md @@ -12,13 +12,13 @@ Yii では、アセットは、ウェブページで参照できるファイル このチュートリアルでは、Yii によって提供される強力なアセット管理機能について説明します。 -## アセットバンドル +## アセットバンドル Yii はアセットを *アセットバンドル* を単位として管理します。アセットバンドルは、簡単に言えば、あるディレクトリの下に集められた一群のアセットです。 [ビュー](structure-views.md) の中でアセットバンドルを登録すると、バンドルの中の CSS や JavaScript のファイルがレンダリングされるウェブページに挿入されます。 -## アセットバンドルを定義する +## アセットバンドルを定義する アセットバンドルは [[yii\web\AssetBundle]] から拡張された PHP クラスとして定義されます。 バンドルの名前は、対応する PHP クラスの完全修飾名 (先頭のバックスラッシュを除く) です。 @@ -88,7 +88,7 @@ class AppAsset extends AssetBundle これは [[yii\web\AssetBundle::sourcePath|sourcePath]] プロパティを指定した場合にだけ使用されます。 -### アセットの配置場所 +### アセットの配置場所 アセットは、配置場所を基準にして、次のように分類することが出来ます。 @@ -113,7 +113,7 @@ class AppAsset extends AssetBundle このディレクトリの中のファイルはすべて一時的なものと見なされており、削除されることがあります。 -### アセットの依存関係 +### アセットの依存関係 ウェブページに複数の CSS や JavaScript ファイルをインクルードするときは、オーバーライドの問題を避けるために、一定の順序に従わなければなりません。 例えば、ウェブページで jQuery UI ウィジェットを使おうとするときは、jQuery JavaScript ファイルが jQuery UI JavaScript ファイルより前にインクルードされることを保証しなければなりません。 @@ -126,7 +126,7 @@ class AppAsset extends AssetBundle アセットの依存関係は中継されます。つまり、バンドル A が B に依存し、B が C に依存していると、A は C にも依存していることになります。 -### アセットのオプション +### アセットのオプション [[yii\web\AssetBundle::cssOptions|cssOptions]] および [[yii\web\AssetBundle::jsOptions|jsOptions]] のプロパティを指定して、 CSS と JavaScript ファイルがページにインクルードされる方法をカスタマイズすることが出来ます。 @@ -195,7 +195,7 @@ class FontAwesomeAsset extends AssetBundle `beforeCopy` という発行オプションを指定して、`fonts` と `css` サブディレクトリだけが発行されるようにしています。 -### Bower と NPM のアセット +### Bower と NPM のアセット ほとんどの JavaScript/CSS パッケージは、[Bower](http://bower.io/) および/または [NPM](https://www.npmjs.org/) によって管理されています。 あなたのアプリケーションやエクステンションがそのようなパッケージを使っている場合は、以下のステップに従って、ライブラリの中のアセットを管理することが推奨されます。 @@ -211,7 +211,7 @@ class FontAwesomeAsset extends AssetBundle 例えば、[[yii\web\JqueryAsset]] は `@bower/jquery` ではなく `@bower/jquery/dist` を使います。 -## アセットバンドルを使う +## アセットバンドルを使う アセットバンドルを使うためには、[[yii\web\AssetBundle::register()]] メソッドを呼んでアセットバンドルを [ビュー](structure-views.md) に登録します。 例えば、次のようにしてビューテンプレートの中でアセットバンドルを登録することが出来ます。 @@ -233,7 +233,7 @@ AppAsset::register($this); // $this はビューオブジェクトを表す これらのタグの順序は、登録されたバンドル間の依存関係、および、[[yii\web\AssetBundle::css]] と [[yii\web\AssetBundle::js] のプロパティのリストに挙げられたアセットの順序によって決定されます。 -### アセットバンドルをカスタマイズする +### アセットバンドルをカスタマイズする Yii は、[[yii\web\AssetManager]] によって実装されている `assetManager` という名前のアプリケーションコンポーネントを通じてアセットバンドルを管理します。 [[yii\web\AssetManager::bundles]] プロパティを構成することによって、アセットバンドルの振る舞いを @@ -294,7 +294,7 @@ return [ [[yii\web\AssetManager::bundles]] を `false` にセットすることによって、*全て* のバンドルを無効にすることも出来ます。 -### アセットマッピング +### アセットマッピング 時として、複数のアセットバンドルで使われている 正しくない/互換でない アセットファイルパスを「修正」したい場合があります。 例えば、バンドル A がバージョン 1.11.1 の `jquery.min.js` を使い、バンドル B がバージョン 2.1.1 の `jquery.js` を使っているような場合です。 @@ -323,7 +323,7 @@ return [ そして、置き換える側のアセットのパスは、絶対 URL であるか、[[yii\web\AssetManager::basePath]] からの相対パスであるかの、どちらかでなければなりません。 -### アセット発行 +### アセット発行 既に述べたように、アセットバンドルがウェブからアクセス出来ないディレクトリに配置されている場合は、バンドルがビューに登録されるときに、アセットがウェブディレクトリにコピーされます。 このプロセスは *アセット発行* と呼ばれ、[[yii\web\AssetManager|アセットマネージャ]] によって自動的に実行されます。 @@ -349,7 +349,7 @@ return [ この方がファイルのコピーより速く、また、発行されたアセットが常に最新であることを保証することも出来ます。 -## よく使われるアセットバンドル +## よく使われるアセットバンドル コアの Yii コードは多くのアセットバンドルを定義しています。 その中で、下記のバンドルはよく使われるものであり、あなたのアプリケーションやエクステンションのコードでも参照することが出来るものです。 @@ -366,7 +366,7 @@ return [ これらのバンドルのデフォルトの設定があなたの必要を満たさない時は、[アセットバンドルをカスタマイズする](#customizing-asset-bundles) の項で説明したように、それをカスタマイズすることが出来ます。 -## アセット変換 +## アセット変換 直接に CSS および/または JavaScript のコードを書く代りに、何らかの拡張構文を使って書いたものを特別なツールを使って CSS/JavaScript に変換する、ということを開発者はしばしば行います。 例えば、CSS コードのためには、[LESS](http://lesscss.org/) や [SCSS](http://sass-lang.com/) を使うことが出来ます。 @@ -434,7 +434,7 @@ return [ この場合は、元のファイルではなく、結果として作られる CSS/JavaScript ファイルをアセットバンドルのリストに挙げなければなりません。 -## アセットを結合して圧縮する +## アセットを結合して圧縮する ウェブページは数多くの CSS および/または JavaScript ファイルをインクルードすることがあり得ます。 HTTP リクエストの数とこれらのファイルの全体としてのダウンロードサイズを削減するためによく用いられる方法は、複数の CSS/JavaScript ファイルを結合して圧縮し、一つまたはごく少数のファイルにまとめることです。 @@ -456,7 +456,7 @@ HTTP リクエストの数とこれらのファイルの全体としてのダウ そして、結果として、結合/圧縮されたアセットファイルが、元のファイルの代りに、ページにインクルードされます。 -### 一例 +### 一例 上記の方法をさらに説明するために一つの例を挙げましょう。 @@ -529,7 +529,7 @@ return [ つまり、アセットバンドルの構成情報配列は、本番モードのものは `assets-prod.php` に保存し、開発モードのものは `assets-dev.php` に保存するという訳です。 -### `asset` コマンドを使う +### `asset` コマンドを使う Yii は、たった今説明した方法を自動化するための `asset` という名前のコンソールコマンドを提供しています。 diff --git a/docs/guide-ja/structure-controllers.md b/docs/guide-ja/structure-controllers.md index f39b4e66aa4..afc987ac6ba 100644 --- a/docs/guide-ja/structure-controllers.md +++ b/docs/guide-ja/structure-controllers.md @@ -7,7 +7,7 @@ に引き渡して、モデルが生成した結果を [ビュー](structure-views.md) に投入し、最終的に外に出て行くレスポンスを生成します。 -## アクション +## アクション コントローラは *アクション* から構成されます。 アクションは、エンドユーザがアドレスを指定して実行をリクエストできる最も基本的な構成単位です。 @@ -62,7 +62,7 @@ class PostController extends Controller どちらかが失敗したときは、ユーザが必要なデータを入力できるようにするための `create` ビューを表示します。 -## ルート +## ルート エンドユーザは、いわゆる *ルート* によって、アクションのアドレスを指定します。 ルートは、次の部分からなる文字列です。 @@ -88,7 +88,7 @@ ModuleID/ControllerID/ActionID ルートがどのようにしてアクションとして解決されるかについての詳細は、[ルーティングと URL 生成](runtime-routing.md) の節を参照してください。 -## コントローラを作成する +## コントローラを作成する [[yii\web\Application|ウェブアプリケーション]] では、コントローラは [[yii\web\Controller]] またはその子クラスから派生させるべきものです。 同様に、[[yii\console\Application|コンソールアプリケーション]] では、コントローラは [[yii\console\Controller]] またはその子クラスから派生させるべきものです。 @@ -105,7 +105,7 @@ class SiteController extends Controller ``` -### コントローラの ID +### コントローラの ID 通常、コントローラは特定の型のリソースに関するリクエストを処理するように設計されます。 この理由により、たいていはコントローラが処理するリソースの型を示す名詞をコントローラの ID として使います。 @@ -121,7 +121,7 @@ class SiteController extends Controller フォワードスラッシュは、複数レベルのサブディレクトリの区切り文字として使われます (例えば、`panels/admin`)。 -### コントローラクラスの命名規則 +### コントローラクラスの命名規則 コントローラクラスの名前は下記の規則に従ってコントローラの ID から導出することが出来ます。 @@ -148,7 +148,7 @@ class SiteController extends Controller この方法は、コントローラをいくつかのカテゴリに分けて整理したい、けれども [モジュール](structure-modules.md) は使いたくない、という場合に役立ちます。 -### コントローラマップ +### コントローラマップ [[yii\base\Application::controllerMap|コントローラマップ]] を構成すると、上で述べたコントローラの ID とクラス名の制約を乗り越えることが出来ます。 これは、主として、クラス名に対する制御が及ばないサードパーティのコントローラを使おうとする場合に有用です。 @@ -171,7 +171,7 @@ class SiteController extends Controller ``` -### デフォルトコントローラ +### デフォルトコントローラ 全てのアプリケーションは、それぞれ、[[yii\base\Application::defaultRoute]] プロパティを通じて規定されるデフォルトコントローラを持ちます。 リクエストが [ルート](#ids-routes) を指定しない場合、このプロパティによって指定されたルートが使われます。 @@ -187,7 +187,7 @@ class SiteController extends Controller ``` -## アクションを作成する +## アクションを作成する アクションの作成は、コントローラクラスの中にいわゆる *アクションメソッド* を定義するだけの簡単なことです。 アクションメソッドとは、`action` という語で始まる名前を持つ *public* メソッドのことです。 @@ -214,7 +214,7 @@ class SiteController extends Controller ``` -### アクション ID +### アクション ID アクションは、たいてい、あるリソースについて特定の操作を実行するように設計されます。 この理由により、アクション ID は、通常、`view`、`update` などのような動詞になります。 @@ -231,7 +231,7 @@ class SiteController extends Controller として再配布されることを意図して作成されます。 -### インラインアクション +### インラインアクション インラインアクションは、たった今説明したように、アクションメソッドとして定義されるアクションを指します。 @@ -254,7 +254,7 @@ class SiteController extends Controller しかし、同じアクションを別の場所で再利用する計画を持っていたり、また、アクションを再配布したいと思っていたりする場合は、アクションを *スタンドアロンアクション* として定義することを考慮すべきです。 -### スタンドアロンアクション +### スタンドアロンアクション スタンドアロンアクションは、[[yii\base\Action]] またはその子クラスを拡張したクラスとして定義されるものです。 例えば、Yii のリリースに [[yii\web\ViewAction]] と [[yii\web\ErrorAction]] が含まれていますが、これらは両方ともスタンドアロンアクションです。 @@ -302,7 +302,7 @@ class HelloWorldAction extends Action ``` -### アクションの結果 +### アクションの結果 アクションメソッド、または、スタンドアロンアクションの `run()` メソッドの返り値は、重要な意味を持ちます。 それは、対応するアクションの結果を表すものです。 @@ -325,7 +325,7 @@ public function actionForward() ``` -### アクションパラメータ +### アクションパラメータ インラインアクションのアクションメソッドと、スタンドアロンアクションの `run()` メソッドは、*アクションパラメータ* と呼ばれる引数を取ることが出来ます。 パラメータの値はリクエストから取得されます。 @@ -372,7 +372,7 @@ public function actionView(array $id, $version = null) コンソールアプリケーションについては、[コンソールコマンド](tutorial-console.md) の節で詳細を参照してください。 -### デフォルトアクション +### デフォルトアクション すべてのコントローラは、それぞれ、[[yii\base\Controller::defaultAction]] によって規定されるデフォルトアクションを持ちます。 [ルート](#ids-routes) がコントローラ ID のみを含む場合は、指定されたコントローラのデフォルトアクションがリクエストされたことを意味します。 @@ -397,7 +397,7 @@ class SiteController extends Controller ``` -## コントローラのライフサイクル +## コントローラのライフサイクル リクエストを処理するときに、[アプリケーション](structure-applications.md) はリクエストされた [ルート](#routes) に基いてコントローラを作成します。 そして、次に、コントローラはリクエストに応じるために以下のライフサイクルを経過します。 @@ -418,7 +418,7 @@ class SiteController extends Controller 6. アプリケーションはアクションの結果を受け取り、それを [レスポンス](runtime-responses.md) に割り当てる。 -## ベストプラクティス +## ベストプラクティス 良く設計されたアプリケーションでは、コントローラはたいてい非常に軽いものになり、それぞれのアクションは数行のコードしか含まないものになります。 あなたのコントローラが少々複雑になっている場合、そのことは、通常、コントローラをリファクタして、コードの一部を他のクラスに移動すべきことを示すものです。 diff --git a/docs/guide-ja/structure-entry-scripts.md b/docs/guide-ja/structure-entry-scripts.md index faa199b3cee..7cda05d5155 100644 --- a/docs/guide-ja/structure-entry-scripts.md +++ b/docs/guide-ja/structure-entry-scripts.md @@ -21,7 +21,7 @@ * [[yii\base\Application::run()]] を呼んで、受け取ったリクエストを処理する。 -## ウェブアプリケーション +## ウェブアプリケーション 次に示すのが、[ベーシックウェブアプリケーションテンプレート](start-installation.md) のエントリスクリプトです。 @@ -45,7 +45,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## コンソールアプリケーション +## コンソールアプリケーション 同様に、下記がコンソールアプリケーションのエントリスクリプトです:le application: @@ -81,7 +81,7 @@ exit($exitCode); ``` -## 定数を定義する +## 定数を定義する グローバルな定数を定義するには、エントリスクリプトが最善の場所です。 Yii は下記の三つの定数をサポートしています: diff --git a/docs/guide-ja/structure-extensions.md b/docs/guide-ja/structure-extensions.md index d6c430d97a1..e46760e0ebc 100644 --- a/docs/guide-ja/structure-extensions.md +++ b/docs/guide-ja/structure-extensions.md @@ -9,7 +9,7 @@ > Info|情報: 「エクステンション」という用語は Yii に限定されたソフトウェアパッケージを指すものとして使用します。 Yii がなくても使用できる汎用のソフトウェアパッケージを指すためには、「パッケージ」または「ライブラリ」という用語を使うことにします。 -## エクステンションを使う +## エクステンションを使う エクステンションを使うためには、先ずはそれをインストールする必要があります。 ほとんどのエクステンションは [Composer](https://getcomposer.org/) のパッケージとして配布されていて、次の二つの簡単なステップをふめばインストールすることが出来ます。 @@ -65,7 +65,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) > Info|情報: エクステンションのクラスは [Yii クラスオートローダ](concept-autoloading.md) によってオートロードされます。 -### エクステンションを手作業でインストールする +### エクステンションを手作業でインストールする あまり無いことですが、いくつかまたは全てのエクステンションを Composer に頼らずに手作業でインストールしたい場合があるかもしれません。 そうするためには、次のようにしなければなりません。 @@ -90,7 +90,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ``` -## エクステンションを作成する +## エクステンションを作成する あなたの優れたコードを他の人々と共有する必要があると感じたときは、エクステンションを作成することを考慮するのが良いでしょう。 エクステンションは、ヘルパクラス、ウィジェット、モジュールなど、どのようなコードでも含むことが出来ます。 @@ -108,7 +108,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) そうすると、他のユーザがエクステンションを見つけて Composer を使ってインストールすることが出来るようになります。 -### `composer.json` +### `composer.json` 全ての Composer パッケージは、ルートディレクトリに `composer.json` というファイルを持たなければなりません。 このファイルはパッケージに関するメタデータを含むものです。 @@ -156,7 +156,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ``` -#### パッケージ名 +#### パッケージ名 全ての Composer パッケージは、他の全てパッケージに対して唯一のものとして特定できるような名前を持たなければなりません。 パッケージ名の形式は `vendorName/projectName` です。 @@ -168,7 +168,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) このようにすると、ユーザはパッケージが Yii 2 エクステンションであることをより容易に知ることが出来ます。 -#### パッケージタイプ +#### パッケージタイプ パッケージがインストールされたときに Yii のエクステンションとして認識されるように、エクステンションのパッケージタイプを `yii2-extension` と指定することは重要なことです。 @@ -177,7 +177,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) (その情報には、[[yii\base\Application::extensions]] を通じてアクセス出来ます)。 -#### 依存パッケージ +#### 依存パッケージ あなたのエクステンションは Yii に依存します (当然ですね)。 ですから、`composer.json` の `require` エントリのリストにそれ (`yiisoft/yii2`) を挙げなければなりません。 @@ -207,7 +207,7 @@ Composer が Bower または NPM のパッケージをインストールする アセット管理に関する詳細については、[アセット](structure-assets.md#bower-npm-assets) の節を参照してください。 -#### クラスのオートロード +#### クラスのオートロード エクステンションのクラスが Yii のクラスオートローダまたは Composer のクラスオートローダによってオートロードされるように、下記に示すように、`composer.json` ファイルの `autoload` エントリを指定しなければなりません。 @@ -229,13 +229,13 @@ Composer が Bower または NPM のパッケージをインストールする 例えば、上記の `autoload` の宣言は、`@yii/imagine` という名前のエイリアスに対応することになります。 -### 推奨されるプラクティス +### 推奨されるプラクティス エクステンションは他の人々によって使われることを意図したものですから、多くの場合、追加の開発努力が必要になります。 以下に、高品質のエクステンションを作成するときによく用いられ、また推奨されるプラクティスのいくつかを紹介します。 -#### 名前空間 +#### 名前空間 名前の衝突を避けて、エクステンションの中のクラスをオートロード可能にするために、名前空間を使うべきであり、エクステンションの中のクラスに [PSR-4 標準](http://www.php-fig.org/psr/psr-4/) または [PSR-0 標準](http://www.php-fig.org/psr/psr-0/) に従った名前を付けるべきです。 @@ -247,7 +247,7 @@ Composer が Bower または NPM のパッケージをインストールする `yii`、`yii2` または `yiisoft` をベンダー名として使ってはいけません。これらの名前は、Yii のコアコードに使うために予約されています。 -#### ブートストラップクラス +#### ブートストラップクラス 場合によっては、アプリケーションが [ブートストラップ](runtime-bootstrapping.md) の段階にある間に、エクステンションに何らかのコードを実行させたい場合があるでしょう。 例えば、エクステンションをアプリケーションの `beginRequest` イベントに反応させて、何らかの環境設定を調整したいことがあります。 @@ -289,7 +289,7 @@ class MyBootstrapClass implements BootstrapInterface が自動的にブートストラップクラスのインスタンスを作成し、その [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] メソッドを呼びます。 -#### データベースを扱う +#### データベースを扱う あなたのエクステンションはデータベースにアクセスする必要があるかも知れません。 エクステンションを使うアプリケーションが常に `Yii::$db` を DB 接続として使用すると仮定してはいけません。 @@ -304,7 +304,7 @@ class MyBootstrapClass implements BootstrapInterface - マイグレーションの中では [アクティブレコード](db-active-record.md) の使用を避ける。 -#### アセットを使う +#### アセットを使う あなたのエクステンションがウィジェットかモジュールである場合は、動作するために何らかの [アセット](structure-assets.md) が必要である可能性が高いでしょう。 例えば、モジュールは、画像、JavaScript、そして CSS を含むページをいくつか表示するでしょう。 @@ -318,7 +318,7 @@ class MyBootstrapClass implements BootstrapInterface アセットの取り扱い一般に関する詳細は [アセット](structure-assets.md) の節を参照してください。 -#### 国際化と地域化 +#### 国際化と地域化 あなたのエクステンションは、さまざまな言語をサポートするアプリケーションによって使われるかもしれません。 従って、あなたのエクステンションがエンドユーザにコンテンツを表示するものである場合は、それを [国際化](tutorial-i18n.md) するように努めるべきです。 @@ -331,7 +331,7 @@ class MyBootstrapClass implements BootstrapInterface 詳細については、[国際化](tutorial-i18n.md) の節を参照してください。 -#### テスト +#### テスト あなたは、あなたのエクステンションが他の人々に問題をもたらすことなく完璧に動作することを望むでしょう。 この目的を達するためには、あなたのエクステンションを公開する前にテストすべきです。 @@ -342,13 +342,13 @@ Yii はテストのサポートを提供しており、それよって、ユニ 詳細については、[テスト](test-overview.md) の節を参照してください。 -#### バージョン管理 +#### バージョン管理 エクステンションのリリースごとにバージョン番号 (例えば `1.0.1`) を付けるべきです。 どのようなバージョン番号を付けるべきかを決定するときは、[セマンティックバージョニング](http://semver.org) のプラクティスに従うことを推奨します。 -#### リリース(公開) +#### リリース(公開) 他の人々にあなたのエクステンションを知ってもらうためには、それをリリース(公開)する必要があります。 @@ -374,7 +374,7 @@ Yii はテストのサポートを提供しており、それよって、ユニ [コアフレームワークコードスタイル](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style) を参照してください。 -## コアエクステンション +## コアエクステンション Yii は下記のコアエクステンションを提供しています。これらは Yii 開発チームによって開発され保守されているものです。 全て [Packagist](https://packagist.org/) に登録され、[エクステンションを使う](#using-extensions) の項で説明したように、簡単にインストールすることが出来ます。 diff --git a/docs/guide-ja/structure-filters.md b/docs/guide-ja/structure-filters.md index aa2cc9bb917..9f172032ce6 100644 --- a/docs/guide-ja/structure-filters.md +++ b/docs/guide-ja/structure-filters.md @@ -8,7 +8,7 @@ フィルタは、前フィルタ (アクションの *前* に適用されるフィルタのロジック) および/または 後フィルタ (アクションの *後* に適用されるフィルタ) から構成されます。 -## フィルタを使用する +## フィルタを使用する フィルタは、本質的には特別な種類の [ビヘイビア](concept-behaviors.md) です。 したがって、フィルタを使うことは [ビヘイビアを使う](concept-behaviors.md#attaching-behaviors) ことと同じです。 @@ -57,7 +57,7 @@ public function behaviors() - アプリケーションで宣言されたフィルタを `behaviors()` にリストされた逆順で適用する。 -## フィルタを作成する +## フィルタを作成する 新しいアクションフィルタを作成するためには、[[yii\base\ActionFilter]] を拡張して、[[yii\base\ActionFilter::beforeAction()|beforeAction()]] および/または [[yii\base\ActionFilter::afterAction()|afterAction()]] メソッドをオーバーライドします。 @@ -93,13 +93,13 @@ class ActionTimeFilter extends ActionFilter ``` -## コアのフィルタ +## コアのフィルタ Yii はよく使われる一連のフィルタを提供しており、それらは、主として `yii\filters` 名前空間の下にあります。 以下では、それらのフィルタを簡単に紹介します。 -### [[yii\filters\AccessControl|AccessControl]] +### [[yii\filters\AccessControl|AccessControl]] AccessControl は、一組の [[yii\filters\AccessControl::rules|規則]] に基づいて、シンプルなアクセスコントロールを提供するものです。 具体的に言うと、アクションが実行される前に、AccessControl はリストされた規則を調べて、現在のコンテキスト変数 @@ -135,7 +135,7 @@ public function behaviors() アクセスコントロール一般についての詳細は [権限](security-authorization.md) の節を参照してください。 -### 認証メソッドフィルタ +### 認証メソッドフィルタ 認証メソッドフィルタは、[HTTP Basic 認証](http://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC)、 [OAuth 2](http://oauth.net/2/) など、様々なメソッドを使ってユーザを認証するために使われるものです。 @@ -163,7 +163,7 @@ public function behaviors() 詳細については、RESTful の [認証](rest-authentication.md) の節を参照してください。 -### [[yii\filters\ContentNegotiator|ContentNegotiator]] +### [[yii\filters\ContentNegotiator|ContentNegotiator]] ContentNegotiator は、レスポンス形式のネゴシエーションとアプリケーション言語のネゴシエーションをサポートします。 このフィルタは `GET` パラメータと `Accept` HTTP ヘッダを調べることによって、レスポンス形式 および/または 言語を決定しようとします。 @@ -223,7 +223,7 @@ use yii\web\Response; -### [[yii\filters\HttpCache|HttpCache]] +### [[yii\filters\HttpCache|HttpCache]] HttpCache は `Last-Modified` および `Etag` の HTTP ヘッダを利用して、クライアントサイドのキャッシュを実装するものです。 @@ -248,7 +248,7 @@ public function behaviors() HttpCache に関する詳細は [HTTP キャッシュ](caching-http.md) の節を参照してください。 -### [[yii\filters\PageCache|PageCache]] +### [[yii\filters\PageCache|PageCache]] PageCache はサーバサイドにおけるページ全体のキャッシュを実装するものです。 次の例では、PageCache が `index` アクションに適用されて、最大 60 秒間、または、`post` テーブルのエントリ数が変化するまでの間、ページ全体をキャッシュしています。 @@ -280,14 +280,14 @@ public function behaviors() PageCache の使用に関する詳細は [ページキャッシュ](caching-page.md) の節を参照してください。 -### [[yii\filters\RateLimiter|RateLimiter]] +### [[yii\filters\RateLimiter|RateLimiter]] RateLimiter は [リーキーバケットアルゴリズム](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%82%AD%E3%83%BC%E3%83%90%E3%82%B1%E3%83%83%E3%83%88) に基づいてレート制限のアルゴリズムを実装するものです。主として RESTful API を実装するときに使用されます。 このフィルタの使用に関する詳細は [レート制限](rest-rate-limiting.md) の節を参照してください。 -### [[yii\filters\VerbFilter|VerbFilter]] +### [[yii\filters\VerbFilter|VerbFilter]] VerbFilter は、HTTP リクエストメソッド (HTTP 動詞) がリクエストされたアクションによって許可されているかどうかをチェックするものです。 許可されていない場合は、HTTP 405 例外を投げます。 @@ -313,7 +313,7 @@ public function behaviors() } ``` -### [[yii\filters\Cors|Cors]] +### [[yii\filters\Cors|Cors]] クロスオリジンリソース共有 [CORS](https://developer.mozilla.org/ja/docs/HTTP_access_control) とは、ウェブページにおいて、さまざまなリソース (例えば、フォントや JavaScript など) を、それを生成するドメイン以外のドメインからリクエストすることを可能にするメカニズムです。 diff --git a/docs/guide-ja/structure-models.md b/docs/guide-ja/structure-models.md index cd6acaded2f..4fc46a79470 100644 --- a/docs/guide-ja/structure-models.md +++ b/docs/guide-ja/structure-models.md @@ -21,7 +21,7 @@ 通常は [[yii\base\Model]] がモデルの基底クラスとして推奨されます。 -## 属性 +## 属性 モデルは業務のデータを *属性* の形式で表現します。 全ての属性はそれぞれパブリックにアクセス可能なモデルのプロパティと同様なものです。 @@ -54,7 +54,7 @@ foreach ($model as $name => $value) { ``` -### 属性を定義する +### 属性を定義する あなたのモデルが [[yii\base\Model]] を直接に拡張するものである場合、既定によって、全ての *static でない public な* メンバ変数は属性となります。 例えば、次に示す `ContactForm` モデルは4つの属性、すなわち、`name`、`email`、`subject`、そして、`body` を持ちます。 @@ -82,7 +82,7 @@ class ContactForm extends Model `__get()` や `__set()` などのマジックメソッドをオーバーライドする必要があるかもしれないことに注意してください。 -### 属性のラベル +### 属性のラベル 属性の値を表示したり、入力してもらったりするときに、属性と関連付けられたラベルを表示する必要があることがよくあります。 例えば、`firstName` という名前の属性を考えたとき、入力フォームやエラーメッセージのような箇所でエンドユーザに表示するときは、もっとユーザフレンドリーな `First Name` というラベルを表示したいと思うでしょう。 @@ -149,7 +149,7 @@ public function attributeLabels() しかし、たいていの場合、モデルの中でラベルを宣言する方が便利が良く、結果としてクリーンで再利用可能なコードになります。 -## シナリオ +## シナリオ モデルはさまざまに異なる *シナリオ* で使用されます。 例えば、`User` モデルはユーザログインの入力を収集するために使われますが、同時に、ユーザ登録の目的でも使われます。 @@ -222,7 +222,7 @@ class User extends ActiveRecord しかし、他の目的に使うことも可能です。例えば、現在のシナリオに基づいて異なる [属性のラベル](#attribute-labels) を宣言することも出来ます。 -## 検証規則 +## 検証規則 モデルのデータをエンドユーザから受け取ったときは、データを検証して、それが一定の規則 (*検証規則*、あるいは、いわゆる *ビジネスルール*) を満たしていることを確認しなければなりません。 `ContactForm` モデルを例に挙げるなら、全ての属性が空ではなく、`email` 属性が有効なメールアドレスを含んでいることを確認したいでしょう。 @@ -291,7 +291,7 @@ public function rules() の中で宣言されている一つまたは複数のアクティブな規則と結び付けられている場合であり、また、そのような場合だけです。 -## 一括代入 +## 一括代入 一括代入は、一行のコードを書くだけで、ユーザの入力したデータをモデルに投入できる便利な方法です。 一括代入は、入力されたデータを [[yii\base\Model::$attributes]] に直接に代入することによって、モデルの属性にデータを投入します。 @@ -313,7 +313,7 @@ $model->body = isset($data['body']) ? $data['body'] : null; ``` -### 安全な属性 +### 安全な属性 一括代入は、いわゆる *安全な属性*、すなわち、[[yii\base\Model::scenarios()]] においてモデルの現在の [[yii\base\Model::scenario|シナリオ]] のためにリストされている属性に対してのみ適用されます。 @@ -348,7 +348,7 @@ public function rules() ``` -### 安全でない属性 +### 安全でない属性 上記で説明したように、[[yii\base\Model::scenarios()]] メソッドは二つの目的を持っています。 すなわち、どの属性が検証されるべきかを決めることと、どの属性が安全であるかを決めることです。 @@ -373,7 +373,7 @@ $model->secret = $secret; ``` -## データのエクスポート +## データのエクスポート モデルを他の形式にエクスポートする必要が生じることはよくあります。例えば、一群のモデルを JSON や Excel 形式に変換したい場合があるでしょう。 @@ -400,7 +400,7 @@ $array = $post->attributes; ウェブサービスの開発においては、これがモデルをエクスポートする既定の方法となっています。 -### フィールド +### フィールド フィールドとは、単に、モデルの [[yii\base\Model::toArray()]] メソッドを呼ぶことによって取得される配列に含まれる名前付きの要素のことです。 @@ -460,7 +460,7 @@ public function fields() > および `password_reset_token` を選んで除去しています。 -## ベストプラクティス +## ベストプラクティス モデルは、業務のデータ、規則、ロジックを表わす中心的なオブジェクトです。 モデルは、さまざまな場所で再利用される必要がよくあります。 diff --git a/docs/guide-ja/structure-modules.md b/docs/guide-ja/structure-modules.md index cec1f793627..8bf3c852e2d 100644 --- a/docs/guide-ja/structure-modules.md +++ b/docs/guide-ja/structure-modules.md @@ -7,7 +7,7 @@ しかし、モジュールは単独では配置できず、アプリケーションの中に存在しなければならないという点で [アプリケーション](structure-applications.md) とは異なります。 -## モジュールを作成する +## モジュールを作成する モジュールは、モジュールの [[yii\base\Module::basePath|ベースパス]] と呼ばれるディレクトリとして組織されます。 このディレクトリの中に、ちょうどアプリケーションの場合と同じように、`controllers`、`models`、`views` @@ -27,7 +27,7 @@ forum/ ``` -### モジュールクラス +### モジュールクラス 全てのモジュールは [[yii\base\Module]] から拡張したユニークなモジュールクラスを持たなければなりません。 モジュールクラスは、モジュールの [[yii\base\Module::basePath|ベースパス]] 直下に配置されて [オートロード可能](concept-autoloading.md) になっていなければなりません。 @@ -78,7 +78,7 @@ return [ ``` -### モジュール内のコントローラ +### モジュール内のコントローラ モジュールの中でコントローラを作成するときは、コントローラクラスをモジュールクラスの名前空間の `controllers` サブ名前空間に置くことが規約です。 このことは、同時に、コントローラのクラスファイルをモジュールの [[yii\base\Module::basePath|ベースパス]] 内の `controllers` ディレクトリに置くべきことをも意味します。 @@ -100,7 +100,7 @@ class PostController extends Controller これは、[アプリケーションでのコントローラマップ](structure-applications.md#controller-map) の場合と同様です。 -### モジュール内のビュー +### モジュール内のビュー モジュール内のビューは、モジュールの [[yii\base\Module::basePath|ベースパス]] 内の `views` ディレクトリに置かれなくてはなりません。 モジュール内のコントローラによってレンダリングされるビューは、ディレクトリ `views/ControllerID` の下に置きます。 @@ -112,7 +112,7 @@ class PostController extends Controller `layout` プロパティを構成しない場合は、アプリケーションのレイアウトが代りに使用されます。 -## モジュールを使う +## モジュールを使う アプリケーションの中でモジュールを使うためには、アプリケーションの [[yii\base\Application::modules|modules]] プロパティのリストにそのモジュールを載せてアプリケーションを構成するだけで大丈夫です。 次のコードは、[アプリケーションの構成情報](structure-applications.md#application-configurations) の中で `forum` モジュールを使うようにするものです。 @@ -133,7 +133,7 @@ class PostController extends Controller そして、対応する配列の値は、そのモジュールを作成するための [構成情報](concept-configurations.md) です。 -### ルート +### ルート アプリケーションの中のコントローラをアクセスするのと同じように、[ルート](structure-controllers.md#routes) がモジュールの中のコントローラを指し示すために使われます。 モジュール内のコントローラのルートは、モジュール ID で始まり、コントローラ ID、アクション ID と続くものでなければなりません。 @@ -142,7 +142,7 @@ class PostController extends Controller これは、`forum` というルートは `forum` モジュール内の `default` コントローラを表すという意味です。 -### モジュールにアクセスする +### モジュールにアクセスする モジュール内において、モジュール ID や、モジュールのパラメータ、モジュールのコンポーネントなどにアクセスするために、[モジュールクラス](#module-classes) のインスタンスを取得する必要があることがよくあります。 次の文を使ってそうすることが出来ます。 @@ -181,7 +181,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -### モジュールをブートストラップする +### モジュールをブートストラップする いくつかのモジュールは、全てのリクエストで毎回走らせる必要があります。[[yii\debug\Module|デバッグ]] モジュールがその一例です。 そうするためには、そのようなモジュールをアプリケーションの [[yii\base\Application::bootstrap|bootstrap]] プロパティのリストに挙げます。 @@ -201,7 +201,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -## 入れ子のモジュール +## 入れ子のモジュール モジュールはレベルの制限無く入れ子にすることが出来ます。 つまり、モジュールは別のモジュールを含むことが出来、その含まれたモジュールもさらに別のモジュールを含むことが出来ます。 @@ -236,7 +236,7 @@ class Module extends \yii\base\Module このリストには、直接の子と孫以下の両方のモジュールが含まれ、クラス名によってインデックスされています。 -## ベストプラクティス +## ベストプラクティス モジュールは、それぞれ密接に関係する一連の機能を含む数個のグループに分割できるような、規模の大きなアプリケーションに最も適しています。 そのような機能グループをそれぞれモジュールとして、特定の個人やチームによって開発することが出来ます。 diff --git a/docs/guide-ja/structure-views.md b/docs/guide-ja/structure-views.md index 0cf1df7d38e..dd4fb21a9d9 100644 --- a/docs/guide-ja/structure-views.md +++ b/docs/guide-ja/structure-views.md @@ -9,7 +9,7 @@ なお、簡潔さを重視して、ビューテンプレートまたはビューテンプレートファイルを単にビューと呼ぶことがよくあります。 -## ビューを作成する +## ビューを作成する 前述のように、ビューは HTML と PHP コードが混ざった単なる PHP スクリプトです。 次に示すのは、ログインフォームを表示するビューです。 @@ -46,7 +46,7 @@ $this->title = 'ログイン'; これは、ビューにドキュメントを付けるのにも良い方法です。 -### セキュリティ +### セキュリティ HTML ページを生成するビューを作成するときは、エンドユーザから受け取るデータを表示する前にエンコード および/または フィルタすることが重要です。 そうしなければ、あなたのアプリケーションは [クロスサイトスクリプティング](http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) 攻撃をこうむるおそれがあります。 @@ -81,7 +81,7 @@ use yii\helpers\HtmlPurifier; アプリケーションが高いパフォーマンスを要求する場合は、フィルター結果を [キャッシュ](caching-overview.md) することを考慮すべきです。 -### ビューを整理する +### ビューを整理する [コントローラ](structure-controllers.md) や [モデル](structure-models.md) と同じように、ビューを整理するための規約があります。. @@ -98,7 +98,7 @@ use yii\helpers\HtmlPurifier; メソッドをオーバーライドすることでカスタマイズすることが可能です。 -## ビューをレンダリングする +## ビューをレンダリングする [コントローラ](structure-controllers.md) の中でも、[ウィジェット](structure-widgets.md) の中でも、または、その他のどんな場所でも、 ビューをレンダリングするメソッドを呼ぶことによってビューをレンダリングすることが出来ます。 @@ -114,7 +114,7 @@ methodName($view, $params = []) ``` -### コントローラでのレンダリング +### コントローラでのレンダリング [コントローラ](structure-controllers.md) の中では、ビューをレンダリングするために次のコントローラメソッドを呼ぶことが出来ます。 @@ -153,7 +153,7 @@ class PostController extends Controller ``` -### ウィジェットでのレンダリング +### ウィジェットでのレンダリング [ウィジェット](structure-widgets.md) の中では、ビューをレンダリングするために、次のウィジェットメソッドを使用することが出来ます。 @@ -183,7 +183,7 @@ class ListWidget extends Widget ``` -### ビューでのレンダリング +### ビューでのレンダリング [[yii\base\View|ビューコンポーネント]] によって提供される下記のメソッドのどれかを使うと、ビューの中で、別のビューをレンダリングすることが出来ます。 @@ -200,7 +200,7 @@ class ListWidget extends Widget ``` -### 他の場所でのレンダリング +### 他の場所でのレンダリング 場所がどこであれ、`Yii::$app->view` という式によって [[yii\base\View|ビュー]] アプリケーションコンポーネントにアクセスすることが出来ますから、 前述の [[yii\base\View|ビュー]] コンポーネントメソッドを使ってビューをレンダリングすることが出来ます。 @@ -212,7 +212,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); ``` -### 名前付きビュー +### 名前付きビュー ビューをレンダリングするとき、ビューを指定するのには、ビューの名前か、ビューファイルのパス/エイリアスか、どちらかを使うことが出来ます。 たいていの場合は、より簡潔で柔軟な前者を使います。 @@ -240,7 +240,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); 一方、そのビューの中で `$this->render('_overview')` を呼ぶと、ビューファイル `@app/views/post/_overview.php` がレンダリングされることになります。 -### ビューの中でデータにアクセスする +### ビューの中でデータにアクセスする ビューの中でデータにアクセスするためのアプローチが二つあります。「プッシュ」と「プル」です。 @@ -272,7 +272,7 @@ The controller ID is: context->id ?> ビューが共有されてさまざまな場所でレンダリングされる場合、その作業が面倒くさくなり、また、間違いも生じやすくなります。 -### ビューの間でデータを共有する +### ビューの間でデータを共有する [[yii\base\View|ビューコンポーネント]] が提供する [[yii\base\View::params|params]] プロパティを使うと、ビューの間でデータを共有することが出来ます。 @@ -291,14 +291,14 @@ $this->params['breadcrumbs'][] = 'About Us'; ``` -## レイアウト +## レイアウト レイアウトは、複数のビューの共通部分をあらわす特殊なタイプのビューです。 例えば、たいていのウェブアプリケーションでは、ページは共通のヘッダとフッタを持っています。 すべてのビューで同じヘッダとフッタを繰り返すことも出来ますが、もっと良い方法は、そういうことはレイアウトの中で一度だけして、コンテンツビューのレンダリング結果をレイアウトの中の適切な場所に埋め込むことです。 -### レイアウトを作成する +### レイアウトを作成する レイアウトもまたビューですので、通常のビューと同様な方法で作成することが出来ます。 既定では、レイアウトは `@app/views/layouts` ディレクトリに保存されます。 @@ -356,7 +356,7 @@ use yii\helpers\Html; body の終了位置を目的とする登録された HTML コード (JavaScript など) によって置き換えられるプレースホルダを生成します。 -### レイアウトでデータにアクセスする +### レイアウトでデータにアクセスする レイアウトの中では、事前定義された二つの変数、すなわち、`$this` と `$content` にアクセス出来ます。 前者は、通常のビューにおいてと同じく、[[yii\base\View|ビュー]] コンポーネントを参照します。 @@ -367,7 +367,7 @@ use yii\helpers\Html; コンテンツビューからレイアウトにデータを渡す必要があるときは、[ビューの間でデータを共有する](#sharing-data-among-views) の項で説明されている方法を使うことが出来ます。 -### レイアウトを使う +### レイアウトを使う [コントローラでのレンダリング](#rendering-in-controllers) の項で説明されているように、コントローラの中で [[yii\base\Controller::render()|render()]] メソッドを呼んでビューをレンダリングすると、レンダリング結果にレイアウトが適用されます。 @@ -418,7 +418,7 @@ class PostController extends Controller レイアウトの値がファイル拡張子を含んでいない場合は、デフォルト値である `.php` を使います。 -### 入れ子のレイアウト +### 入れ子のレイアウト ときとして、あるレイアウトの中に別のレイアウトを入れたい場合があるでしょう。 例えば、ウェブサイトの別々のセクションにおいて、違うレイアウトを使いたいけれども、 @@ -443,7 +443,7 @@ class PostController extends Controller 上記のアプローチを使って、2レベル以上のレイアウトを入れ子にすることも出来ます。 -### ブロックを使う +### ブロックを使う ブロックを使うと、ある場所でビューコンテンツを規定して、別の場所でそれを表示することが可能になります。 ブロックはたいていはレイアウトと一緒に使われます。 @@ -504,7 +504,7 @@ class PostController extends Controller ``` -## ビューコンポーネントを使う +## ビューコンポーネントを使う [[yii\base\View|ビューコンポーネント]] はビューに関連する多くの機能を提供します。 ビューコンポーネントは、[[yii\base\View]] またはその子クラスの個別のインスタンスを作成することによっても取得できますが、たいていの場合は、`view` アプリケーションコンポーネントを主として使うことになるでしょう。 @@ -533,7 +533,7 @@ class PostController extends Controller 次に挙げるマイナーではあっても有用な諸機能は、ウェブページを開発するときに頻繁に使用するでしょう。 -### ページタイトルを設定する +### ページタイトルを設定する どんなウェブページにもタイトルが無ければなりません。通常、タイトルタグは [layout](#layouts) の中で表示されます。 しかし、実際においては、多くの場合、タイトルはレイアウトではなくコンテンツビューで決められます。 @@ -554,7 +554,7 @@ $this->title = 'My page title'; ``` -### メタタグを登録する +### メタタグを登録する ウェブページは、通常、いろいろな関係者によって必要とされるさまざまなメタタグを生成する必要があります。 ページタイトルと同じように、メタタグは `` セクションに出現して、通常はレイアウトの中で生成されます。 @@ -585,7 +585,7 @@ $this->registerMetaTag(['name' => 'description', 'content' => '面白いアラ ``` -### リンクタグを登録する +### リンクタグを登録する [メタタグ](#registering-meta-tags) と同じように、リンクタグも多くの場合において有用なものです。 例えば、favicon をカスタマイズしたり、RSS フィードを指し示したり、OpenID を別のサーバに委任したり、等々。 @@ -611,7 +611,7 @@ $this->registerLinkTag([ を呼ぶときにキーを指定すると、同じリンクタグを繰り返して生成するのを避けることが出来ます。 -## ビューのイベント +## ビューのイベント [[yii\base\View|ビューコンポーネント]] はビューをレンダリングする過程においていくつかのイベントをトリガします。 これらのイベントに反応することによって、ビューにコンテンツを注入したり、エンドユーザに送信される前にレンダリング結果を加工したりすることが出来ます。 @@ -634,7 +634,7 @@ $this->registerLinkTag([ ``` -## 静的なページをレンダリングする +## 静的なページをレンダリングする 静的なページというのは、主たるコンテンツのほとんどが静的なもので、コントローラからプッシュされる動的なデータにアクセスする必要がないページを指します。 @@ -680,7 +680,7 @@ http://localhost/index.php?r=site/page&view=about [[yii\web\ViewAction::viewPrefix]] を構成して、ビューを探すディレクトリを変更することが出来ます。 -## ベストプラクティス +## ベストプラクティス ビューはエンドユーザが望む形式でモデルを表現することに対して責任を持ちます。一般的に、ビューは diff --git a/docs/guide-ja/structure-widgets.md b/docs/guide-ja/structure-widgets.md index 8dc99ef6a1b..a26ca4c873f 100644 --- a/docs/guide-ja/structure-widgets.md +++ b/docs/guide-ja/structure-widgets.md @@ -19,7 +19,7 @@ use yii\jui\DatePicker; 特定のウィジェットの使い方について学ぶ必要がある場合は、クラス API ドキュメントを参照してください。 -## ウィジェットを使う +## ウィジェットを使う ウィジェットは主として [ビュー](structure-views.md) で使われます。 ビューでウィジェットを使うためには、[[yii\base\Widget::widget()]] メソッドを使うことが出来ます。 @@ -69,7 +69,7 @@ use yii\helpers\Html; 返されたウィジェットのインスタンスを使って、ウィジェットのコンテンツを構築することが出来ます。 -## ウィジェットを作成する +## ウィジェットを作成する ウィジェットを作成するためには、[[yii\base\Widget]] を拡張して、[[yii\base\Widget::init()]] および/または [[yii\base\Widget::run()]] メソッドをオーバーライドします。 通常、`init()` メソッドはウィジェットのプロパティを正規化するコードを含むべきものであり、`run()` メソッドはウィジェットのレンダリング結果を生成するコードを含むべきものです。 @@ -172,7 +172,7 @@ public function run() [[yii\base\Widget::getViewPath()]] メソッドをオーバーライドして、ウィジェットのビューファイルを含むディレクトリをカスタマイズすることが出来ます。 -## ベストプラクティス +## ベストプラクティス ウィジェットはビューのコードを再利用するためのオブジェクト指向の方法です。 diff --git a/docs/guide-ja/tutorial-console.md b/docs/guide-ja/tutorial-console.md index 925e0d1b38f..e12b5cd5322 100644 --- a/docs/guide-ja/tutorial-console.md +++ b/docs/guide-ja/tutorial-console.md @@ -10,7 +10,7 @@ Yii はフル機能のコンソールアプリケーションをサポートし また、各コントローラは、ウェブのコントローラと全く同じように、一つまたは複数のアクションを持つことが出来ます。 -使用方法 +使用方法 -------- コンソールのコントローラアクションは次の構文を使って実行します。 @@ -32,7 +32,7 @@ yii migrate/create --migrationTable=my_migration > これは、`*` をカレントディレクトリの全てのファイル名に置き換えられるシェルのグロブとして実行してしまうことを避けるためです。 -エントリスクリプト +エントリスクリプト ------------------ コンソールアプリケーションのエントリスクリプトは、ウェブアプリケーションで使用されるブートストラップファイル `index.php` に相当するものです。 @@ -68,7 +68,7 @@ exit($exitCode); ベーシックアプリケーションテンプレートでも、アドバンストアプリケーションテンプレートでも、コンソールアプリケーションのエントリスクリプトは、開発者に優しい環境を提供するために、デフォルトでデバッグを有効にしています。 -構成情報 +構成情報 -------- 上記のコードで見るように、コンソールアプリケーションは、`console.php` という名前のそれ自身の構成情報ファイルを使用します。 @@ -86,7 +86,7 @@ exit($exitCode); > ``` -あなた自身のコンソールコマンドを作成する +あなた自身のコンソールコマンドを作成する ---------------------------------------- ### コンソールのコントローラとアクション diff --git a/docs/guide-ja/tutorial-core-validators.md b/docs/guide-ja/tutorial-core-validators.md index 244ea502b37..e09ce0990dd 100644 --- a/docs/guide-ja/tutorial-core-validators.md +++ b/docs/guide-ja/tutorial-core-validators.md @@ -20,7 +20,7 @@ public function rules() 以下では、全てのコアバリデータについて、主な使用方法とプロパティを説明します。 -## [[yii\validators\BooleanValidator|boolean]] +## [[yii\validators\BooleanValidator|boolean]] ```php [ @@ -42,7 +42,7 @@ public function rules() > Note|注意: HTML フォームで送信されたデータ入力値は全て文字列であるため、通常は、[[yii\validators\BooleanValidator::strict|strict]] プロパティは false のままにすべきです。 -## [[yii\captcha\CaptchaValidator|captcha]] +## [[yii\captcha\CaptchaValidator|captcha]] ```php [ @@ -57,7 +57,7 @@ public function rules() - `skipOnEmpty`: 入力値が空のときに検証をスキップできるかどうか。デフォルト値は false で、入力が必須であることを意味します。 -## [[yii\validators\CompareValidator|compare]] +## [[yii\validators\CompareValidator|compare]] ```php [ @@ -88,7 +88,7 @@ public function rules() * `<=`: 検証される値が比較される値よりも小さいか等しいことを検証する。 -## [[yii\validators\DateValidator|date]] +## [[yii\validators\DateValidator|date]] ```php [ @@ -113,7 +113,7 @@ public function rules() [['from_date', 'to_date'], 'default', 'value' => null], ``` -## [[yii\validators\DefaultValueValidator|default]] +## [[yii\validators\DefaultValueValidator|default]] ```php [ @@ -147,7 +147,7 @@ function foo($model, $attribute) { > Info|情報: 値が空であるか否かを決定する方法については、独立したトピックとして、[空の入力値を扱う](input-validation.md#handling-empty-inputs) の節でカバーされています。 -## [[yii\validators\NumberValidator|double]] +## [[yii\validators\NumberValidator|double]] ```php [ @@ -165,7 +165,7 @@ function foo($model, $attribute) { 設定されていない場合は、バリデータが下限値をチェックしないことを意味します。 -## [[yii\validators\EmailValidator|email]] +## [[yii\validators\EmailValidator|email]] ```php [ @@ -185,7 +185,7 @@ function foo($model, $attribute) { IDN のバリデーションを使用するためには、`intl` PHP 拡張をインストールして有効化する必要があることに注意してください。そうしないと、例外が投げられます。 -## [[yii\validators\ExistValidator|exist]] +## [[yii\validators\ExistValidator|exist]] ```php [ @@ -235,7 +235,7 @@ function foo($model, $attribute) { `targetAttribute` を配列で指定して複数のカラムに対して検証しようとしている場合は、このプロパティを true に設定することが出来ないことに注意してください。 -## [[yii\validators\FileValidator|file]] +## [[yii\validators\FileValidator|file]] ```php [ @@ -270,7 +270,7 @@ function foo($model, $attribute) { ファイルのアップロードおよびアップロードされたファイルのバリデーションの実行に関する完全な説明は、[ファイルをアップロードする](input-file-upload.md) の節を参照してください。 -## [[yii\validators\FilterValidator|filter]] +## [[yii\validators\FilterValidator|filter]] ```php [ @@ -308,7 +308,7 @@ function foo($model, $attribute) { > ``` -## [[yii\validators\ImageValidator|image]] +## [[yii\validators\ImageValidator|image]] ```php [ @@ -330,7 +330,7 @@ function foo($model, $attribute) { - `maxHeight`: 画像の高さの最大値。デフォルト値は null であり、上限値がないことを意味します。 -## [[yii\validators\RangeValidator|in]] +## [[yii\validators\RangeValidator|in]] ```php [ @@ -350,7 +350,7 @@ function foo($model, $attribute) { このプロパティが true であるときに、入力値が配列である場合は、配列の全ての要素が所与の値のリストにある必要があり、そうでなければ検証は失敗します。 -## [[yii\validators\NumberValidator|integer]] +## [[yii\validators\NumberValidator|integer]] ```php [ @@ -365,7 +365,7 @@ function foo($model, $attribute) { - `min`: 下限値 (その値を含む)。設定されていないときは、バリデータは下限をチェックしません。 -## [[yii\validators\RegularExpressionValidator|match]] +## [[yii\validators\RegularExpressionValidator|match]] ```php [ @@ -382,7 +382,7 @@ function foo($model, $attribute) { このプロパティが true に設定されているときは、入力値がパターンに一致しない場合にだけ検証が成功したと見なされます。 -## [[yii\validators\NumberValidator|number]] +## [[yii\validators\NumberValidator|number]] ```php [ @@ -397,7 +397,7 @@ function foo($model, $attribute) { - `min`: 下限値 (その値を含む)。設定されていないときは、バリデータは下限をチェックしません。 -## [[yii\validators\RequiredValidator|required]] +## [[yii\validators\RequiredValidator|required]] ```php [ @@ -418,7 +418,7 @@ function foo($model, $attribute) { > Info|情報: 値が空であるか否かを決定する方法については、独立したトピックとして、[空の入力値を扱う](input-validation.md#handling-empty-inputs) の節でカバーされています。 -## [[yii\validators\SafeValidator|safe]] +## [[yii\validators\SafeValidator|safe]] ```php [ @@ -431,7 +431,7 @@ function foo($model, $attribute) { その代りに、このバリデータは、属性を [安全な属性](structure-models.md#safe-attributes) としてマークするために使われます。 -## [[yii\validators\StringValidator|string]] +## [[yii\validators\StringValidator|string]] ```php [ @@ -452,7 +452,7 @@ function foo($model, $attribute) { - `encoding`: 検証される入力文字列の文字エンコーディング。設定されていない時は、アプリケーションの [[yii\base\Application::charset|charset]] の値が使われ、デフォルトでは `UTF-8` となります。 -## [[yii\validators\FilterValidator|trim]] +## [[yii\validators\FilterValidator|trim]] ```php [ @@ -466,7 +466,7 @@ function foo($model, $attribute) { 入力値が配列であるときは、このバリデータによって無視されることに注意してください。 -## [[yii\validators\UniqueValidator|unique]] +## [[yii\validators\UniqueValidator|unique]] ```php [ @@ -508,7 +508,7 @@ function foo($model, $attribute) { `$query` は関数の中で修正できる [[yii\db\Query|Query]] オブジェクトです。 -## [[yii\validators\UrlValidator|url]] +## [[yii\validators\UrlValidator|url]] ```php [ diff --git a/docs/guide-ja/tutorial-i18n.md b/docs/guide-ja/tutorial-i18n.md index 0d02a1475da..c17685b1afd 100644 --- a/docs/guide-ja/tutorial-i18n.md +++ b/docs/guide-ja/tutorial-i18n.md @@ -544,7 +544,7 @@ class TranslationEventHandler 詳細は [データフォーマッタ](output-formatter.md) の節を参照してください。 -PHP 環境をセットアップする +PHP 環境をセットアップする -------------------------- Yii は、[[yii\i18n\Formatter]] クラスの数値や日付の書式設定や、[[yii\i18n\MessageFormatter]] を使うメッセージのフォーマッティングなど、ほとんどの国際化機能を提供するために [PHP intl 拡張](http://php.net/manual/ja/book.intl.php) を使います。 diff --git a/docs/guide-ja/tutorial-shared-hosting.md b/docs/guide-ja/tutorial-shared-hosting.md index 4f53ee0c8fb..82b37b84877 100644 --- a/docs/guide-ja/tutorial-shared-hosting.md +++ b/docs/guide-ja/tutorial-shared-hosting.md @@ -10,7 +10,7 @@ 通例、一つのウェブルートしかありませんので、ベーシックアプリケーションテンプレートを使用することを推奨します。 [Yii をインストールする](start-installation.md) の節を参照して、アプリケーションテンプレートをローカル環境にインストールしてください。 -### ウェブサーバのための追加設定 +### ウェブサーバのための追加設定 使用されているウェブサーバが Apache である場合は、次の内容を持つ `.htaccess` ファイルを `web` (`index.php` があるディレクトリ) に追加する必要があります。 @@ -30,7 +30,7 @@ RewriteRule . index.php nginx の場合は、追加の構成ファイルは必要がない筈です。 -### ウェブルートの名前を変える +### ウェブルートの名前を変える FTP またはその他の手段であなたの共有ホストに接続したとき、下記のようなディレクトリが見えれば、あなたはきっとラッキーです。 diff --git a/docs/guide-ja/tutorial-yii-integration.md b/docs/guide-ja/tutorial-yii-integration.md index 8c012f18cfc..b8802602cb7 100644 --- a/docs/guide-ja/tutorial-yii-integration.md +++ b/docs/guide-ja/tutorial-yii-integration.md @@ -6,12 +6,12 @@ この節では、こういう目的をどうやって達成するかを説明します。 -Yii の中でサードパーティのライブラリを使う +Yii の中でサードパーティのライブラリを使う ------------------------------------------ Yii アプリケーションの中でサードパーティのライブラリを使うために主として必要なことは、そのライブラリの中のクラスが適切にインクルードされること、または、オートロード可能な状態にあることを保証することです。 -### Composer パッケージを使う +### Composer パッケージを使う 多くのサードパーティライブラリは [Composer](https://getcomposer.org/) パッケージの形式でリリースされています。 そのようなライブラリは、次の二つの簡単なステップを踏むことによって、インストールすることが出来ます。 @@ -30,7 +30,7 @@ require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` -### ダウンロードしたライブラリを使う +### ダウンロードしたライブラリを使う ライブラリが Composer パッケージとしてリリースされていない場合は、そのライブラリのインストールの指示に従ってインストールしなければなりません。 たいていの場合は、リリースファイルを手動でダウンロードし、`BasePath/vendor` ディレクトリの下に解凍する必要があります。 @@ -67,7 +67,7 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php'; ``` -サードパーティのシステムで Yii を使う +サードパーティのシステムで Yii を使う ------------------------------------- Yii は数多くの優れた機能を提供していますので、サードパーティのシステム (例えば、WordPress、Joomla、または、他の PHP フレームワークを使って開発されるアプリケーション) を開発したり機能拡張したりするのをサポートするために Yii の機能のいくつかを使用したいことがあるでしょう。 @@ -109,7 +109,7 @@ Yii アプリケーションでの場合と同じように、サードパーテ 例えば、アクティブレコードクラスを作成して、それを使ってデータベースを扱うことが出来ます。 -Yii 2 を Yii 1 とともに使う +Yii 2 を Yii 1 とともに使う --------------------------- あなたが Yii 1 を前から使っている場合は、たぶん、稼働中の Yii 1 アプリケーションを持っているでしょう。 diff --git a/docs/guide-pt-BR/start-databases.md b/docs/guide-pt-BR/start-databases.md index ac9740125c0..a4359484bd0 100644 --- a/docs/guide-pt-BR/start-databases.md +++ b/docs/guide-pt-BR/start-databases.md @@ -20,7 +20,7 @@ banco de dados, e como executar instruções SQL usando uma ferramenta de client de BD. -Preparando o Banco de Dados +Preparando o Banco de Dados --------------------------- Para começar, crie um banco de dados chamado `yii2basic`, a partir do qual você @@ -54,7 +54,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); Neste ponto, você tem um banco de dados chamado `yii2basic`, e dentro dele uma tabela `country` com três colunas, contendo dez linhas de dados. -Configurando uma Conexão do BD +Configurando uma Conexão do BD ------------------------------ Antes de prosseguir, certifique-se de que você possui instalados tanto a @@ -91,7 +91,7 @@ através da expressão `Yii::$app->db`. deverá ser inicializada. Para mais informações, por favor consulte a seção sobre [Configurações](concept-configurations.md). -Criando um Active Record +Criando um Active Record ------------------------ Para representar e buscar os dados da tabela `country`, crie uma classe que @@ -145,7 +145,7 @@ $country->save(); dados de baixo nível chamado [Data Access Objects](db-dao.md). -Criando uma Action +Criando uma Action ------------------ Para expor os dados de países aos usuários finais, você precisaria de uma nova @@ -205,7 +205,7 @@ No final do código, a action `index` renderiza uma view chamada `index`, e pass para ela os dados dos países bem como as informações de paginação. -Criando uma View +Criando uma View ---------------- Dentro do diretório `views`, primeiro crie um sub-diretório chamado `country`. @@ -239,7 +239,7 @@ lista de botões para as páginas. Ao clicar em qualquer um deles atualizará os dados dos países com a página correspondente. -Testando +Testando -------- Para verificar se todo os códigos acima funcionam, use o seu navegador para @@ -278,7 +278,7 @@ a funcionalidade necessária para paginar um conjunto de dados: próximos cinco países para a exibição. -Resumo +Resumo ------ Nesta seção, você aprendeu como trabalhar com um banco de dados. Você também diff --git a/docs/guide-pt-BR/start-forms.md b/docs/guide-pt-BR/start-forms.md index edb8dc6d0f0..e624eeec4f1 100644 --- a/docs/guide-pt-BR/start-forms.md +++ b/docs/guide-pt-BR/start-forms.md @@ -16,7 +16,7 @@ Através deste tutorial, você aprenderá como: * Criar um formulário HTML em uma [visão](structure-views.md) (view) -Criando uma Modelo (Model) +Criando uma Modelo (Model) ---------------- Os dados a serem solicitados pelo usuário será representados por uma classe modelo @@ -82,7 +82,7 @@ if ($model->validate()) { ``` -Criando uma Ação +Criando uma Ação ------------------ Em seguida, você precisará criar uma ação `entry` no controlador `site` que será usado no novo modelo. O processo de criação e utilização das ações são explicadas na seção @@ -144,7 +144,7 @@ validação. para evitar [problemas ao reenviar formulários](http://en.wikipedia.org/wiki/Post/Redirect/Get). -Criando Visões +Criando Visões -------------- Finalmente, crie dois arquivos de visões chamados de `entry-confirm` e `entry`. @@ -195,7 +195,7 @@ o método [[yii\helpers\Html::submitButton()]] é chamado para criar o botão de enviar. -Testando +Testando ------------- Para ver como ele funciona, utilize seu navegador para acessar a seguinte URL: @@ -218,7 +218,7 @@ nova página exibindo os dados informados por você. -### Explicação da Mágica +### Explicação da Mágica Você pode querer saber como o formulário HTML trabalha por baixo dos panos, porque parece quase mágica exibir um *label* para cada campo de entrada e mostrar mensagens @@ -255,7 +255,7 @@ Você pode personalizar um *label* em uma visão utilizando o seguinte código: widget para simplificar o desenvolvimento de visões no futuro. -Resumo +Resumo ------- Nesta seção, você tocou em cada parte do padrão de arquitetura MVC. diff --git a/docs/guide-pt-BR/start-gii.md b/docs/guide-pt-BR/start-gii.md index 60144bd4115..524d1052170 100644 --- a/docs/guide-pt-BR/start-gii.md +++ b/docs/guide-pt-BR/start-gii.md @@ -11,7 +11,7 @@ Através desse tutorial, você irá aprender a: * Customizar o código gerado pelo Gii -Começando a usar o Gii +Começando a usar o Gii ------------ O [Gii](tool-gii.md) é fornecido com o Yii como um [módulo](structure-modules.md). Você pode habilitar o Gii ao configurá-lo na propriedade [[yii\base\Application::modules|modules]] da aplicação. Dependendo de como você criou sua aplicação, você pode já encontrar o seguinte código no arquivo de configuração `config/web.php`: @@ -52,7 +52,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -Gerando uma classe Active Record +Gerando uma classe Active Record --------------------------------- Para usar o Gii para gerar uma classe Active Record, selecione o "Model Generator" clicando no link na página inicial do Gii. Preencha o formulário como indicado abaixo: @@ -73,7 +73,7 @@ Quando estiver sobrescrevendo um arquivo, marque a caixa próxima a "overwrite" Em seguida, você verá uma página de confirmação indicando que o código foi gerado com sucesso. Se você já tinha um arquivo, também verá uma mensagem indicando que ele foi sobrescrito com o novo código. -Gerando código CRUD +Gerando código CRUD -------------------- CRUD corresponde a Create, Read, Update, and Delete (criar, ler, atualizar e apagar), representando as quatro tarefas comuns feitas com os dados na maioria dos sites. Para criar funcionalidades CRUD usando o Gii, selecione "CRUD Generator" clicando no link na página inicial do Gii. Seguindo o exemplo "country", preencha o formulário com as seguintes informações: @@ -92,7 +92,7 @@ Se você criou anteriormente os arquivos `controllers/CountryController.php` e `views/country/index.php` (na seção de banco de dados deste guia), marque a caixa "overwrite" para substitui-los. (As versões anteriores não tinham suporte completo às operações CRUD.) -Checando os resultados +Checando os resultados ------------- Para ver como ficou, use seu navegador para acessar a seguinte URL: @@ -119,7 +119,7 @@ Essa é uma lista de arquivos gerados pelo Gii, caso você queira investigar com > Informação: o Gii é projetado para ser uma ferramenta altamente adaptável e extensível. Usando-o sabiamente, você irá acelerar o desenvolvimento da sua aplicação. Para mais detalhes, por favor siga para a seção [Gii](tool-gii.md). -Resumo +Resumo ------- Nessa seção, você aprendeu a usar o Gii para gerar código que implementa funcionalidades CRUD para o conteúdo guardado em uma tabela do banco de dados. diff --git a/docs/guide-pt-BR/start-hello.md b/docs/guide-pt-BR/start-hello.md index 9a423fafc3f..f09805a8c68 100644 --- a/docs/guide-pt-BR/start-hello.md +++ b/docs/guide-pt-BR/start-hello.md @@ -16,7 +16,7 @@ Através deste tutorial, você aprenderá três coisas: 3. como uma aplicação envia as requisições para as [ações](structure-controllers.md#creating-actions). -Criando uma Ação +Criando uma Ação ---------------- Para a tarefa "Hello", você criará uma [ação](structure-controllers.md#creating-actions) @@ -81,7 +81,7 @@ será recebido pela aplicação, e exibido para o usuário final no navegador (c parte de uma págian HTML completa). -Criando uma Visão +Criando uma Visão ----------------- As [visões](structure-views.md) são scripts que você escreve para gerar o conteúdo @@ -111,7 +111,7 @@ O conteúdo impresso pelo script da visão será retornado à aplicação como o da resposta. A aplicação, por sua vez, retornará este resultado para o usuário final. -Testando +Testando -------- Após criar a ação e a visão, você pode acessar a nova página através da seguinte URL: @@ -153,7 +153,7 @@ resultado, o método `SiteController::actionSay()` será chamado para tratar a r de controlador `PostCommentController`. -Resumo +Resumo ------ Nesta seção, você tocou as partes do controlador (controller) e da visão (view) diff --git a/docs/guide-pt-BR/start-installation.md b/docs/guide-pt-BR/start-installation.md index bc0b1e2c0ba..f321a401780 100644 --- a/docs/guide-pt-BR/start-installation.md +++ b/docs/guide-pt-BR/start-installation.md @@ -25,7 +25,7 @@ novo no Yii, recomendamos fortemente em escolher o Template Básico de Aplicaç pela sua simplicidade além de ter funcionalidades o suficiente. -Instalando via Composer +Instalando via Composer ----------------------- Se você já não tiver o Composer instalado, você pode fazê-lo seguindo as instruções @@ -68,7 +68,7 @@ em um diretório chamado `basic`. Você pode escolher um diretório diferente se > uma vez que ela pode quebrar o seu código que está rodando. -Instalando a partir de um Arquivo Compactado +Instalando a partir de um Arquivo Compactado -------------------------------------------- A instalação do Yii a partir de um arquivo compactado envolve três passos: @@ -85,7 +85,7 @@ o Yii pelo Composer): ``` -Outras Opções de Instalação +Outras Opções de Instalação --------------------------- As instruções de instalação acima mostram como instalar o Yii, que também cria @@ -104,7 +104,7 @@ No entanto, existem outras opções de instalação disponíveis: [Modelo de Aplicação Avançada](tutorial-advanced-app.md). -Verificando a Instalação +Verificando a Instalação ------------------------ Após a instalação, você pode usar o seu navegador para acessar a aplicação do Yii @@ -140,7 +140,7 @@ e o driver do banco de dados correspondente (tal como `pdo_mysql` para bancos de dados MySQL), se a sua aplicação precisar de um banco de dados. -Configurando os Servidores Web +Configurando os Servidores Web ------------------------------ > Informação: Você pode pular essa subseção se só estiver fazendo um test drive do Yii @@ -174,7 +174,7 @@ objetivos. para mais detalhes. -### Configuração do Apache Recomendada +### Configuração do Apache Recomendada Use a seguinte configuração no arquivo `httpd.conf` do Apache ou em uma configuração de virtual host. Perceba que você pode deve substituir `path/to/basic/web` @@ -198,7 +198,7 @@ DocumentRoot "path/to/basic/web" ``` -### Configuração do Nginx Recomendada +### Configuração do Nginx Recomendada Você deve ter instalado o PHP como um [FPM SAPI](http://php.net/install.fpm) para usar o [Nginx](http://wiki.nginx.org/). Use a seguinte configuração do Nginx, diff --git a/docs/guide-pt-BR/start-workflow.md b/docs/guide-pt-BR/start-workflow.md index e0550981248..aa4abbb77d5 100644 --- a/docs/guide-pt-BR/start-workflow.md +++ b/docs/guide-pt-BR/start-workflow.md @@ -14,7 +14,7 @@ em geral. necessidades. -Funcionalidade +Funcionalidade -------------- A aplicação básica instalada contém quatro páginas: @@ -36,7 +36,7 @@ registrar e exibir várias informações de depuração, tais como mensagens de status de respostas, as consultas de banco de dados executadas, e assim por diante. -Estrutura da Aplicação +Estrutura da Aplicação ---------------------- Os diretórios e arquivos mais importantes em sua aplicação são (assumindo que @@ -84,7 +84,7 @@ do MVC. São usados [Widgets](structure-widgets.md) nas [views](structure-views. para ajudar a construir elementos de interface de usuário complexos e dinâmicos. -Ciclo de Vida da Requisição +Ciclo de Vida da Requisição --------------------------- O diagrama a seguir demonstra como uma aplicação gerencia uma requisição. diff --git a/docs/guide-pt-BR/structure-application-components.md b/docs/guide-pt-BR/structure-application-components.md index effebdf9c9c..6aa267a43e4 100644 --- a/docs/guide-pt-BR/structure-application-components.md +++ b/docs/guide-pt-BR/structure-application-components.md @@ -58,7 +58,7 @@ Por exemplo, simplesmente criar um componente local e utilizá-lo quando necessário. -## Components de Inicialização +## Components de Inicialização Conforme mencionado acima, um componente de aplicação só será instanciado quando ele estiver sendo acessado pela primeira vez. Se ele nunca for acessado durante @@ -84,7 +84,7 @@ Por exemplo, a configuração de aplicação a seguir assegura-se que o componen ``` -## Componentes de Aplicação do Core +## Componentes de Aplicação do Core O yii define um conjunto de componentes de aplicação do **core** com IDs fixos e configurações padrão. Por exemplo, o componente [[yii\web\Application::request|request]] diff --git a/docs/guide-pt-BR/structure-applications.md b/docs/guide-pt-BR/structure-applications.md index 37ae7027541..550d9f4c85f 100644 --- a/docs/guide-pt-BR/structure-applications.md +++ b/docs/guide-pt-BR/structure-applications.md @@ -15,7 +15,7 @@ o primeiro manipula requisições Web enquanto o segundo trata requisições de comandos do console. -## Configurações da Aplicação +## Configurações da Aplicação Quando um [script de entrada](structure-entry-scripts.md) cria uma aplicação, ele carregará uma [configuração](concept-configurations.md) e a aplicará à aplicação, @@ -39,7 +39,7 @@ Uma vez que geralmente são muito complexas, elas normalmente são mantidas em como o arquivo `web.php` no exemplo acima. -## Propriedades da Aplicação +## Propriedades da Aplicação Existem muitas propriedades importantes da aplicação que deveriam ser configuradas. Essas propriedades tipicamente descrevem o ambiente em que as aplicaçõe estão @@ -48,13 +48,13 @@ rodando. Por exemplo, as aplicações precisam saber como carregar os etc. A seguir resumiremos essas propriedades. -### Propriedades Obrigatórias +### Propriedades Obrigatórias Em qualquer aplicação, você deve pelo menos configurar duas propriedades: [[yii\base\Application::id|id]] e [[yii\base\Application::basePath|basePath]]. -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] A propriedade [[yii\base\Application::id|id]] especifica um ID único que diferencia uma aplicação das outras. É usado principalmente programaticamente. Apesar de não @@ -62,7 +62,7 @@ ser obrigatório, para melhor interoperabilidade recomenda-se que você só use caracteres alfanuméricos ao especificar um ID de aplicação. -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] A propriedade [[yii\base\Application::basePath|basePath]] especifica o diretório raiz de um sistema. É o diretório que contém todo o código fonte protegido de um @@ -82,13 +82,13 @@ representar esse caminho. Assim os caminhos derivados podem ser formados usando esse alias (por exemplo, `@app/runtime` para referenciar o diretório runtime). -### Propriedades Importantes +### Propriedades Importantes As propriedades descritas nesta subseção frequentemente precisam ser configuradas porque elas variam em diferentes aplicações. -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] Esta propriedade permite que você defina um conjunto de [aliases](concept-aliases.md) em termos de um array. As chaves do array representam @@ -107,7 +107,7 @@ Essa propriedade está disponível de modo que você possa definir aliases em te de configurações da aplicação ao invés de chamadas ao método [[Yii::setAlias()]]. -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] Esta é uma propriedade muito útil. Ela permite que você especifique um array de componentes que devem ser executados durante o [[yii\base\Application::bootstrap()|processo de inicialização]] @@ -186,7 +186,7 @@ if (YII_ENV_DEV) { ser carregado. Desta forma, use os componentes de inicialização com juízo. -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] Essa propriedade só é suportada por [[yii\web\Application|aplicações Web]]. Ela especifica uma [action de um controller](structure-controllers.md) que deve @@ -209,7 +209,7 @@ que devem ser atrelados à action. Por exemplo, ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] Essa é a propriedade mais importante. Ela permite que você registre uma lista de componentes chamados [componentes de aplicação](structure-application-components.md) @@ -240,7 +240,7 @@ Por favor leia a seção [Componentes de Aplicação](structure-application-comp para mais detalhes. -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] Essa propriedade permite que você mapeie um ID de um controller a uma classe de controller arbitrária. Por padrão, o Yii mapeia os IDs de controllers a classes @@ -269,7 +269,7 @@ os valores do array representam o nome ou as [configurações](concept-configura da classe do controller. -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] Essa propriedade especifica o namespace padrão sob o qual as classes dos controllers deverão ser localizadas. Seu valor padrão é `app\controllers`. Se um @@ -291,7 +291,7 @@ Caso você queira quebrar a convenção conforme descrito acima, você pode conf a propriedade [controllerMap](#controllerMap). -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] Essa propriedade especifica o idioma no qual a aplicação deve exibir o conteúdo aos usuários finais. O valor padrão dessa propriedade é `en`, significando inglês. @@ -312,7 +312,7 @@ Mais detalhes sobre essa propriedade podem ser encontrados na seção [Internacionalização](tutorial-i18n.md). -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] Essa propriedade especifica os [módulos](structure-modules.md) que uma aplicação contém. @@ -338,7 +338,7 @@ com as chaves do array sendo os IDs dos módulos. Por exemplo, Por favor consulte a seção [Módulos](structure-modules.md) para mais detalhes. -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] Essa propriedade especifica o nome da aplicação que pode ser exibido aos usuários finais. Ao contrário da propriedade [[yii\base\Application::id|id]] que @@ -349,7 +349,7 @@ Você nem sempre precisa configurar essa propriedade se nenhuma parte do código a estiver usando. -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] Essa propriedade especifica um array de parâmetros da aplicação que podem ser acessados globalmente. Ao invés de usar números e strings fixos espalhados por @@ -379,7 +379,7 @@ modificá-lo na configuração da aplicação sem tocar em quaisquer códigos dependentes. -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] Essa propriedade especifica o idioma no qual o código da aplicação foi escrito. O valor padrão é `'en-US'`, significando inglês dos Estados Unidos. Você deve @@ -395,7 +395,7 @@ Mais detalhes sobre essa propriedade podem ser encontrados na seção [Internacionalização](tutorial-i18n.md). -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] Essa propriedade é disponibilizada como uma maneira alternativa de definir a timezone do PHP em tempo de execução. Ao confiugrar essa propriedade, você está @@ -410,21 +410,21 @@ do PHP. Por exemplo, ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] Essa propriedade especifica a versão da aplicação. Seu valor padrão é `'1.0'`. Você nem sempre precisa configurar essa propriedade se nenhuma parte do seu código a está usando. -### Propriedades Úteis +### Propriedades Úteis As propriedades descritas nesta subseção não são comumente configuradas porque seus valores padrão estipulam convenções comuns. No entanto, você pode ainda configurá-las no caso de querer quebrar as convenções. -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] Essa propriedade especifica o charset que a aplicação usa. O valor padrão é `'UTF-8'`, que deveria ser mantido como está para a maioria das aplicações, a @@ -432,7 +432,7 @@ menos que você esteja trabalhando com sistemas legados que usam muitos dados qu não são unicode. -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] Essa propriedade especifica a [rota](runtime-routing.md) que uma aplicação deveria usar quando uma requisição não especifica uma. A rota pode consistir de um ID de @@ -452,7 +452,7 @@ você executar o comando `yii` sem fornecer quaisquer argumentos, ele exibirá a informação de ajuda. -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] Essa propriedade especifica a lista de [extensões](structure-extensions.md) que estão instaladas e são usadas pela aplicação. Por padrão, ela receberá o array @@ -492,7 +492,7 @@ especificado com um nome de uma classe de inicialização ou um array de alguns [aliases](concept-aliases.md). -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] Essa propriedade especifica o nome do layout padrão que deverá ser usado ao renderizar uma [view](structure-views.md). O valor padrão é `'main'`, significando @@ -505,7 +505,7 @@ Você pode configurar esta propriedade como `false` se você quiser desativar o layout por padrão, embora isso seja muito raro. -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] Essa propriedade especifica o caminho onde os arquivos de layout devem ser procurados. O valor padrão é o subdiretório `layouts` dentro do diretório do @@ -517,7 +517,7 @@ Você pode configurá-la como um diretório ou um [alias](concept-aliases.md) de caminho. -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] Essa propriedade especifica o caminho onde os arquivos temporários, tais como arquivos de log e de cache, podem ser gerados. O valor padrão é o diretório @@ -533,7 +533,7 @@ Para simplificar o acesso a esse caminho, o Yii possui um alias de caminho pré-definido chamado `@runtime` para ele. -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] Essa propriedade especifica o diretório raiz onde os arquivos de views estão localizados. O valor padrão do diretório é representado pelo alias `@app/views`. @@ -541,7 +541,7 @@ Você pode configurá-lo como um diretório ou [alias](concept-aliases.md) de caminho. -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] Essa propriedade especifica o diretório vendor gerenciado pelo [Composer](http://getcomposer.org). Ele contém todas as bibliotecas de terceiros usadas pela sua aplicação, incluindo @@ -555,14 +555,14 @@ Para simplificar o acesso a esse caminho, o Yii tem um alias de caminho pré-def para ele chamado de `@vendor`. -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] Essa propriedade só é suportada por [[yii\console\Application|aplicações do console]]. Ela especifica se os comandos do core inclusos no pacote do Yii devem estar ativos. O valor padrão é `true`. -## Eventos da Aplicação +## Eventos da Aplicação Uma aplicação dispara muitos eventos durante o ciclo de vida de manipulação de uma requisição. Você pode vincular manipuladores a esses eventos nas @@ -589,7 +589,7 @@ ser criada. Por exemplo, }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] Este evento é disparado *antes* de uma aplicação manipular uma requisição. O nome do evento é `beforeRequest`. @@ -601,7 +601,7 @@ Por exemplo, no manipulador de eventos, você pode definir dinamicamente a propriedade [[yii\base\Application::language]] baseado em alguns parâmetros. -### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] Este evento é disparado *depois* que uma aplicação finaliza o tratamento da requisição, mas *antes* de enviar a resposta. O nome do evento é `afterRequest`. @@ -615,7 +615,7 @@ eventos enquanto está enviando conteúdo de resposta para os usuários finais. Esses eventos são disparados *depois* deste evento. -### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] Este evento é disparado *antes* de executar cada [action de controller](structure-controllers.md). O nome do evento é `beforeAction`. @@ -642,7 +642,7 @@ controllers. Se um manipulador de evento definir [[yii\base\ActionEvent::isValid como `false`, todos os eventos seguintes NÃO serão disparados. -### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] Este evento é disparado *depois* de executar cada [action de controller](structure-controllers.md). O nome do evento é `afterAction`. @@ -669,7 +669,7 @@ objetos a disparar este evento, seguidos pelos módulos (se houver algum) e finalmente pelos objetos Application. -## Ciclo de Vida da Aplicação +## Ciclo de Vida da Aplicação Quando um [script de entrada](structure-entry-scripts.md) estiver sendo executado para manipular uma requisição, uma aplicação passará pelo seguinte ciclo de vida: diff --git a/docs/guide-pt-BR/structure-assets.md b/docs/guide-pt-BR/structure-assets.md index c080d431756..9b251f1e9fc 100644 --- a/docs/guide-pt-BR/structure-assets.md +++ b/docs/guide-pt-BR/structure-assets.md @@ -15,7 +15,7 @@ de assets. Neste tutorial, iremos descrever esta poderosa capacidade de gerênci de assets fornecidas pelo Yii. -## Asset Bundles +## Asset Bundles O Yii gerencia os assets na unidade de *asset bundle*. Um asset bundle é simplesmente uma coleção de assets localizados em um diretório. Quando você @@ -23,7 +23,7 @@ registrar um asset bundle em uma [view (visão)](structure-views.md), serão incluídos os arquivos CSS e JavaScript do bundle na página Web renderizada. -## Definindo os Asset Bundles +## Definindo os Asset Bundles Os asset bundles são especificados como classes PHP que estendem de [[yii\web\AssetBundle]]. O nome de um bundle corresponde simplesmente a um nome @@ -115,7 +115,7 @@ O bundle depende de outros dois bundles: [[yii\web\YiiAsset]] e apenas se você especificar a propriedade [[yii\web\AssetBundle::sourcePath|sourcePath]]. -### Localização dos Assets +### Localização dos Assets Os assets, com base em sua localização, podem ser classificados como: @@ -155,7 +155,7 @@ ao definir as classes de asset bundle. estar sujeitos a serem deletados. -### Dependências de Assets +### Dependências de Assets Ao incluir vários arquivos CSS ou JavaScript em uma página Web, devem seguir uma determinada ordem para evitar problemas de sobrescritas. Por exemplo, se você @@ -173,7 +173,7 @@ As dependências de assets são transitivas. Isto significa que se um asset bund A depende de B e que o B depende de C, o A também dependerá de C. -### Opções do Asset +### Opções do Asset Você pode especificar as propriedades [[yii\web\AssetBundle::cssOptions|cssOptions]] e [[yii\web\AssetBundle::jsOptions|jsOptions]] para personalizar o modo que os @@ -254,7 +254,7 @@ O exemplo anterior define um asset bundle para o publicação `beforeCopy`, apenas os subdiretórios `fonts` e `css` serão publicados. -### Assets do Bower e NPM +### Assets do Bower e NPM A maioria dos pacotes JavaScript/CSS são gerenciados pelo [Bower](http://bower.io/) e/ou [NPM](https://www.npmjs.org/). @@ -277,7 +277,7 @@ você siga os passos a seguir para gerenciar os assets na biblioteca: `@bower/jquery`. -## Usando Asset Bundles +## Usando Asset Bundles Para usar um asset bundle, registre uma [view (visão)](structure-views.md) chamando o método [[yii\web\AssetBundle::register()]]. Por exemplo, no template @@ -307,7 +307,7 @@ registrados e pela ordem dos assets informados nas propriedades [[yii\web\AssetBundle::css]] e [[yii\web\AssetBundle::js]]. -### Personalizando os Asset Bundles +### Personalizando os Asset Bundles O Yii gerencia os asset bundles através do componente de aplicação chamado `assetManager` que é implementado pelo [[yii\web\AssetManager]]. @@ -378,7 +378,7 @@ Você também pode desabilitar *todos* os asset bundles definindo o [[yii\web\AssetManager::bundles]] como `false`. -### Mapeando Asset +### Mapeando Asset Às vezes, você pode querer "corrigir" os caminhos dos arquivos de asset incorretos/incompatíveis em vários asset bundles. Por exemplo, o bundle A usa o @@ -418,7 +418,7 @@ chave a chave `jquery.js`. ou caminhos relativos ao caminho da propriedade [[yii\web\AssetManager::basePath]]. -### Publicação de Asset +### Publicação de Asset Como mencionado anteriormente, se um asset bundle for localizado em um diretório que não é acessível pela Web, os seus assets serão copiados para um diretório @@ -453,7 +453,7 @@ rápido que a cópia de arquivos e também pode garantir que os assets publicado estejam sempre atualizados. -## Asset Bundles de Uso Comum +## Asset Bundles de Uso Comum O código nativo do Yii definiu vários asset bundles. Entre eles, os bundles a seguir são de uso comum e podem ser referenciados em sua aplicação ou no código @@ -476,7 +476,7 @@ padrão destes bundles não satisfazer o que precisa, você pode personaliza-los conforme descrito na subseção [Personalizando os Asset Bundles](#customizing-asset-bundles). -## Conversão de Assets +## Conversão de Assets Ao invés de escrever diretamente códigos CSS e/ou JavaScript, os desenvolvedores geralmente os escrevem em alguma sintaxe estendida e usam ferramentas especiais @@ -561,7 +561,7 @@ de asset fonte e pelo caminho do arquivo de asset de destino. CSS/JavaScript resultantes nos asset bundles ao invés dos arquivos originais. -## Combinando e Comprimindo Assets +## Combinando e Comprimindo Assets Uma página Web pode incluir muitos arquivos CSS e/ou JavaScript. Para reduzir o número de requisições HTTP e o tamanho total de downloads destes arquivos, uma @@ -598,7 +598,7 @@ original pertence. E, como resultado, os arquivos de asset combinados/comprimido serão incluídos na página, ao invés dos originais. -### Um Exemplo +### Um Exemplo Vamos usar um exemplo para explicar melhor o exemplo acima: @@ -687,7 +687,7 @@ Ou seja, o array de configuração do asset bundle será salvo no arquivo quando não estiver em produção. -### Usando o Comando `asset` +### Usando o Comando `asset` O Yii fornece um comando console chamado `asset` para automatizar a abordagem que acabamos de descrever. diff --git a/docs/guide-pt-BR/structure-controllers.md b/docs/guide-pt-BR/structure-controllers.md index 955dc012362..fdbc31f990b 100644 --- a/docs/guide-pt-BR/structure-controllers.md +++ b/docs/guide-pt-BR/structure-controllers.md @@ -11,7 +11,7 @@ para os [models](structure-models.md) (modelos), incluirão os resultados dos mo de saída. -## Actions (Ações) +## Actions (Ações) Os controllers são compostos por unidades básicas chamadas *ações* que podem ser tratados pelos usuários finais a fim de realizar a sua execução. @@ -67,7 +67,7 @@ para a ação `view` com o novo ID criado pelo model. Caso contrário, a ação a view `create` na qual os usuário poderão fornecer os dados necessários. -## Routes (Rotas) +## Routes (Rotas) Os usuários finais abordarão as ações por meio de *rotas*. Uma rota é uma string composta pelas seguintes partes: @@ -93,7 +93,7 @@ a ação `index` do controller `site` será executada. Para mais detalhes sobre as ações são resolvidas pelas rotas, por favor consulte a seção [Roteamento e Criação de URL](runtime-routing.md). -## Criando Controllers +## Criando Controllers Em [[yii\web\Application|aplicações Web]], os controllers devem estender de [[yii\web\Controller]] ou de suas classes filhas. De forma semelhante, em [[yii\console\Application|aplicaçoes console]], @@ -110,7 +110,7 @@ class SiteController extends Controller ``` -### IDs dos Controllers +### IDs dos Controllers Normalmente, um controller é projetado para tratar as requisições relativos a um determinado tipo de recurso. Por esta razão, os IDs dos controllers geralmente @@ -131,7 +131,7 @@ em caixa alto ou caixa baixa, números, underscores (underline) e barras, onde a barras são usadas para separar os níveis dos subdiretórios (por exemplo, `panels/admin`). -### Nomenclatura da Classe do Controller +### Nomenclatura da Classe do Controller Os nomes da classes dos controllers podem ser derivadas dos IDs dos controllers de acordo com as seguintes regras: @@ -161,7 +161,7 @@ um controller em um subdiretório do [[yii\base\Application::controllerNamespace categorias e não quiser usar [módulos](structure-modules.md). -### Mapeando Controllers +### Mapeando Controllers Você pode configurar um [[yii\base\Application::controllerMap|mapeamento de controllers]] para superar as barreiras impostas pelos IDs de controllers e pelos nomes de classes descritos acima. Isto é útil principalmente quando quiser esconder alguns controllers @@ -186,7 +186,7 @@ na [configuração da aplicação](structure-applications.md#application-configu ``` -### Controller Padrão +### Controller Padrão Cada aplicação tem um controller padrão que é especificado pela propriedade [[yii\base\Application::defaultRoute]]. Quando uma requisição não especificar uma [rota](#id-da-rota), será utilizada a @@ -205,7 +205,7 @@ Você pode alterar o controller padrão como a seguinte [configuração da aplic ``` -## Criando Ações +## Criando Ações Criar ações pode ser tão simples como a definição dos chamados *métodos de ação* em uma classe controller. Um método de ação é um método *público* cujo nome inicia @@ -232,7 +232,7 @@ class SiteController extends Controller ``` -### IDs das Ações +### IDs das Ações Uma ação muitas vezes é projetada para realizar uma manipulação em particular sobre um recurso. Por esta razão, os IDs das ações geralmente são verbos, tais como `view`, `update`, etc. @@ -252,7 +252,7 @@ para serem utilizados em diferentes controllers ou para serem distribuídos como [extensions](structure-extensions.md). -### Ações Inline +### Ações Inline As ações inline referem-se a os chamados métodos de ação, que foram descritos anteriormente. @@ -276,7 +276,7 @@ para serem criadas. No entanto, se você deseja reutilizar algumas ações em di lugares ou se deseja distribuir uma ação, deve considerar defini-la como uma *ação standalone*. -### Ações Standalone +### Ações Standalone Ações standalone são definidas por classes de ações que estendem de [[yii\base\Action]] ou de suas classes filhas. @@ -325,7 +325,7 @@ class HelloWorldAction extends Action ``` -### Resultados da Ação +### Resultados da Ação O valor de retorno do método de ação ou do método `run()` de uma ação standalone são importantes. Eles representam o resultado da ação correspondente. @@ -355,7 +355,7 @@ public function actionForward() ``` -### Parâmetros da Ação +### Parâmetros da Ação Os métodos de ações para as ações inline e os métodos `run()` para as ações standalone podem receber parâmetros, chamados *parâmetros da ação*. @@ -416,7 +416,7 @@ aplicações Web. Para aplicações console, por favor, consulte a seção [Comandos de Console](tutorial-console.md) para mais detalhes. -### Default Action +### Default Action Cada controller tem uma ação padrão especificado pela propriedade [[yii\base\Controller::defaultAction]]. @@ -443,7 +443,7 @@ class SiteController extends Controller ``` -## Ciclo de Vida do Controller +## Ciclo de Vida do Controller Ao processar uma requisição, a [aplicação](structure-applications.md) criará um controller baseada na [rota](#routes) solicitada. O controller, então, se submeterá @@ -465,7 +465,7 @@ ao seguinte ciclo de vida para concluir a requisição: 6. A aplicação obterá o resultado da ação e irá associá-lo na [resposta](runtime-responses.md). -## Best Practices +## Best Practices Em uma aplicação bem projetada, frequentemente os controllers são bem pequenos na qual cada ação possui poucas linhas de códigos. diff --git a/docs/guide-pt-BR/structure-entry-scripts.md b/docs/guide-pt-BR/structure-entry-scripts.md index dd5068b4cf8..0d70bed05b6 100644 --- a/docs/guide-pt-BR/structure-entry-scripts.md +++ b/docs/guide-pt-BR/structure-entry-scripts.md @@ -27,7 +27,7 @@ O trabalho principal dos scripts de entrada é o seguinte: * Chamar [[yii\base\Application::run()]] para processar as requisições que chegam. -## Aplicações Web +## Aplicações Web Este é o código no script de entrada para o [Modelo Básico de Aplicação Web](start-installation.md). @@ -51,7 +51,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## Aplicações Console +## Aplicações Console De forma semelhante, o seguinte é o código do script de entrada de uma aplicação do console: @@ -88,7 +88,7 @@ exit($exitCode); ``` -## Definindo Constantes +## Definindo Constantes Os scrips de entrada são o melhor lugar para definir as constantes globais. O Yii suporta as seguintes três constantes: diff --git a/docs/guide-pt-BR/structure-extensions.md b/docs/guide-pt-BR/structure-extensions.md index 5406329c18c..10148b8856e 100644 --- a/docs/guide-pt-BR/structure-extensions.md +++ b/docs/guide-pt-BR/structure-extensions.md @@ -15,7 +15,7 @@ bom trabalho. usados sem o Yii, referenciamos sob o termo de "pacote" ou "biblioteca". -## Usando Extensões +## Usando Extensões Para usar uma extensão, você precisa instalá-lo primeiro. A maioria das extensões são distribuídas como pacotes do [Composer](https://getcomposer.org/) que podem @@ -80,7 +80,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) [classe autoloader do Yii](concept-autoloading.md). -### Instalando Extensões Manualmente +### Instalando Extensões Manualmente Em algumas raras ocasiões, você pode querer instalar algumas ou todas extensões manualmente, ao invés de depender do Composer. @@ -108,7 +108,7 @@ você pode incluir o código a seguir na configuração de sua aplicação: ``` -## Criando Extensões +## Criando Extensões Você pode considerar criar uma extensão quando você sentir a necessidade de compartilhar o seu bom código para outras pessoas. @@ -133,7 +133,7 @@ um pacote do Composer. e instalar suas extensões usando o Composer. -### `composer.json` +### `composer.json` Cada pacote do Composer deve ter um arquivo `composer.json` no diretório root. O arquivo contém os metadados a respeito do pacote. Você pode achar a especificação @@ -181,7 +181,7 @@ O exemplo a seguir mostra o arquivo `composer.json` para a extensão `yiisoft/yi ``` -#### Nome do Pacote +#### Nome do Pacote Cada pacote do Composer deve ter um nome que identifica unicamente o pacote entre todos os outros. Os nomes dos pacotes devem seguir o formato @@ -197,7 +197,7 @@ de extensões em Yii 2, por exemplo, `myname/yii2-mywidget`. Isto permitirá que os usuários encontrem mais facilmente uma extensão Yii 2. -#### Tipo de Pacote +#### Tipo de Pacote É importante que você especifique o tipo de pacote de sua extensão como `yii2-extension`, de modo que o pacote possa ser reconhecido como uma extensão @@ -210,7 +210,7 @@ aplicações Yii podem saber quais extensões estão instaladas (a informação ser acessada através da propriedade [[yii\base\Application::extensions]]). -#### Dependências +#### Dependências Sua extensão depende do Yii (claro!). Sendo assim, você deve listar (`yiisoft/yii2`) na entrada `require` do `composer.json`. Se sua extensão também depender de outras @@ -247,7 +247,7 @@ Estes dois diretórios podem ser referenciados para usar alias mais curtas como Para mais detalhes sobre o gerenciamento de asset, por favor, consulte a seção [Assets](structure-assets.md#bower-npm-assets). -#### Classe Autoloading +#### Classe Autoloading Para que suas classes sejam carregadas automaticamente pela classe autoloader do Yii ou da classe autoloader do Composer, você deve especificar a entrada `autoload` @@ -274,7 +274,7 @@ Por exemplo, a declaração acima do `autoload` corresponderá a uma alias chama `@yii/imagine`. -### Práticas Recomendadas +### Práticas Recomendadas Como as extensões são destinadas a serem usadas por outras pessoas, você precisará, por muitas vezes, fazer um esforço extra durante o desenvolvimento. A seguir, @@ -282,7 +282,7 @@ apresentaremos algumas práticas comuns e recomendadas na criação de extensõe alta qualidade. -#### Namespaces +#### Namespaces Para evitar conflitos de nomes e criar classes autocarregáveis em sua extensão, você deve usar namespaces e nomear as classes seguindo o @@ -298,7 +298,7 @@ Não use `yii`, `yii2` ou `yiisoft` como nome do seu vendor. Estes nomes são reservados para serem usados para o código nativo do Yii. -#### Inicialização das Classes +#### Inicialização das Classes As vezes, você pode querer que sua extensão execute algum código durante o [processo de inicialização](runtime-bootstrapping.md) de uma aplicação. Por @@ -347,7 +347,7 @@ automaticamente a classe de inicialização e chamará o método inicialização para cada requisição. -#### Trabalhando com Banco de Dados +#### Trabalhando com Banco de Dados Sua extensão pode precisar acessar banco de dados. Não pressupunha que as aplicações que usam sua extensão SEMPRE usam o `Yii::$db` como a conexão do @@ -367,7 +367,7 @@ alterações no esquema do banco de dados, você deve: - evitar o uso de [Active Record](db-active-record.md) nas migrations. -#### Usando Assets +#### Usando Assets Se sua extensão usar um widget ou um módulo, pode ter grandes chances de requerer algum [assets](structure-assets.md) para funcionar. @@ -388,7 +388,7 @@ usada com mais facilidade pelos usuários. Por favor, consulte a seção em geral. -#### Internacionalização e Localização +#### Internacionalização e Localização Sua extensão pode ser usada por aplicações que suportam diferentes idiomas! Portanto, se sua extensão exibir conteúdo para os usuários finais, você deve @@ -404,7 +404,7 @@ tentar usar [internacionalização e localização](tutorial-i18n.md). Em partic Para mais detalhes, por favor, consulte a seção [Internacionalização](tutorial-i18n.md). -#### Testes +#### Testes Você quer que sua extensão execute com perfeição sem trazer problemas para outras pessoas. Para alcançar este objetivo, você deve testar sua extensão antes de @@ -419,14 +419,14 @@ testes unitários, testes de aceitação e testes funcionais. Para mais detalhes por favor, consulte a seção [Testing](test-overview.md). -#### Versionamento +#### Versionamento Você deve dar para cada liberação de sua extensão um numero de versão (por exemplo, `1.0.1`). Recomendamos que você siga a prática [versionamento semântico](http://semver.org) ao determinar qual número de versão será usado. -#### Liberando Versões +#### Liberando Versões Para que outras pessoas saibam sobre sua extensão, você deve liberá-lo ao público. @@ -468,7 +468,7 @@ a sua extensão: [estilo de codificação do framework](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style). -## Extensões Nativas +## Extensões Nativas O Yii fornece as seguintes extensões que são desenvolvidas e mantidas pela equipe de desenvolvimento do Yii. Todos são registrados no [Packagist](https://packagist.org/) diff --git a/docs/guide-pt-BR/structure-filters.md b/docs/guide-pt-BR/structure-filters.md index 3c082bcadc1..49533a878c7 100644 --- a/docs/guide-pt-BR/structure-filters.md +++ b/docs/guide-pt-BR/structure-filters.md @@ -13,7 +13,7 @@ aplicadas *antes* que as ações) e/ou um pós-filtro (lógica aplicada *depois* que as ações). -## Usando os Filtros +## Usando os Filtros Os filtros são, essencialmente, um tipo especial de [behaviors (comportamento)](concept-behaviors.md). No entanto, o uso dos filtros @@ -73,7 +73,7 @@ de acordo com as seguintes regras: - Aplica os filtros declarados na aplicação na ordem inversa ao que foram listados no método `behaviors()`. -## Criando Filtros +## Criando Filtros Para criar um novo filtro de ação, deve estender a classe [[yii\base\ActionFilter]] e sobrescrever os métodos [[yii\base\ActionFilter::beforeAction()|beforeAction()]] @@ -112,14 +112,14 @@ class ActionTimeFilter extends ActionFilter ``` -## Filtros Nativos +## Filtros Nativos O Yii fornece um conjunto de filtros que normalmente são usados, localizados sob o namespace `yii\filters`. A seguir, iremos realizar uma breve apresentação destes filtros. -### [[yii\filters\AccessControl|AccessControl]] +### [[yii\filters\AccessControl|AccessControl]] O filtro AccessControl fornece um controle de acesso simples, baseado em um conjunto de [[yii\filters\AccessControl::rules|regras]]. @@ -159,7 +159,7 @@ De modo geral, para mais detalhes sobre o controle de acesso, por favor, consult a seção [Autorização](security-authorization.md). -### Métodos de Autenticação por Filtros +### Métodos de Autenticação por Filtros O método de autenticação por filtros são usados para autenticar um usuário usando vários métodos, tais como @@ -191,7 +191,7 @@ de APIs RESTful. Para mais detalhes, por favor, consulte a seção RESTful [Autenticação](rest-authentication.md). -### [[yii\filters\ContentNegotiator|ContentNegotiator]] +### [[yii\filters\ContentNegotiator|ContentNegotiator]] O filtro ContentNegotiator suporta a identificação de formatos de respostas e o idioma da aplicação. Este filtro tentar determinar o formato de resposta e o @@ -257,7 +257,7 @@ use yii\web\Response; [[languages]] serão utilizados. -### [[yii\filters\HttpCache|HttpCache]] +### [[yii\filters\HttpCache|HttpCache]] O filtro HttpCache implementa no lado do cliente (client-side) o cache pela utilização dos parâmetros `Last-Modified` e `Etag` do cabeçalho HTTP. @@ -285,7 +285,7 @@ Por favor, consulte a seção [Cache HTTP](caching-http.md) para mais detalhes sobre o uso do HttpCache. -### [[yii\filters\PageCache|PageCache]] +### [[yii\filters\PageCache|PageCache]] O filtro PageCache implementa no lado do servidor (server-side) o cache das páginas. No exemplo a seguir, o PageCache é aplicado para a ação `index` guardar @@ -320,7 +320,7 @@ Por favor, consulte a seção [Cache de Página](caching-page.md) para mais detalhes sobre o uso do PageCache. -### [[yii\filters\RateLimiter|RateLimiter]] +### [[yii\filters\RateLimiter|RateLimiter]] O filtro RateLimiter implementa um limitador de acesso baseado no [algoritmo do balde furado (leaky bucket)](http://en.wikipedia.org/wiki/Leaky_bucket). @@ -329,7 +329,7 @@ seção [Limitador de Acesso](rest-rate-limiting.md) para mais detalhes sobre o uso deste filtro. -### [[yii\filters\VerbFilter|VerbFilter]] +### [[yii\filters\VerbFilter|VerbFilter]] O filtro VerbFilter verifica se os métodos de requisição HTTP são permitidos para as ações solicitadas. Se não for, será lançada uma exceção HTTP 405. No exemplo @@ -356,7 +356,7 @@ public function behaviors() } ``` -### [[yii\filters\Cors|Cors]] +### [[yii\filters\Cors|Cors]] O compartilhamento de recursos cross-origin [CORS](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) é um diff --git a/docs/guide-pt-BR/structure-models.md b/docs/guide-pt-BR/structure-models.md index fb869cfe7d2..a524d16bf59 100644 --- a/docs/guide-pt-BR/structure-models.md +++ b/docs/guide-pt-BR/structure-models.md @@ -26,7 +26,7 @@ Por favor, consulte a documentação relevante para mais detalhes sobre estes mo > [[yii\base\Model]], normalmente é a classe base preferível para um model. -## Atributos +## Atributos Os models representam dados de negócio por meio de *atributos*. Cada atributo é uma propriedade publicamente acessível de um model. O método [[yii\base\Model::attributes()]] @@ -61,7 +61,7 @@ foreach ($model as $name => $value) { ``` -### Definindo Atributos +### Definindo Atributos Por padrão, se a classe model estender diretamente de [[yii\base\Model]], todas as suas variáveis públicas e não estáticas serão atributos. Por exemplo, a classe @@ -93,7 +93,7 @@ Observe que também poderá sobrescrever os métodos mágicos tais como `__get() de objetos. -### Labels dos Atributos +### Labels dos Atributos Ao exibir valores ou obter dados de entrada dos atributos, muitas vezes é necessário exibir alguns labels associados aos atributos. Por exemplo, dado um atributo chamado @@ -170,7 +170,7 @@ frequentemente tornam-se mais convenientes e podem resultar um código mais limp e reutilizável. -## Cenários +## Cenários Um model (modelo) pode ser usado em diferentes *cenários*. Por exemplo, um model `User` pode ser usado para obter dados de entrada de login, mas também pode ser @@ -253,7 +253,7 @@ Você pode, no entanto, usá-lo para outros fins. Por exemplo, você pode declar diferentes [labels para os atributos](#attribute-labels) baseados no cenário atual. -## Regras de Validação +## Regras de Validação Quando os dados para um model (modelo) são recebidos de usuários finais, devem ser validados para garantir que satisfazem as regras (*regras de validação*, também @@ -332,7 +332,7 @@ Um atributo será validado, se e somente se, for um atributo ativo declarado no método `scenarios()` e estiver associado a uma ou várias regras declaradas no método `rules()`. -## Atribuição em Massa +## Atribuição em Massa Atribuição em massa é a forma conveniente para popular um model (modelo) com os dados de entrada do usuário usando uma única linha de código. @@ -358,7 +358,7 @@ $model->body = isset($data['body']) ? $data['body'] : null; ``` -### Atributos Seguros +### Atributos Seguros A atribuição em massa só se aplica aos chamados *safe attributes* (atributos seguros), que são os atributos listados no [[yii\base\Model::scenarios()]] para o @@ -403,7 +403,7 @@ public function rules() ``` -### Atributos não Seguros +### Atributos não Seguros Como descrito anteriormente, o método [[yii\base\Model::scenarios()]] serve para dois propósitos: determinar quais atributos devem ser validados e quais atributos @@ -431,7 +431,7 @@ $model->secret = $secret; ``` -## Exportação de Dados +## Exportação de Dados Muitas vezes os models (modelos) precisam ser exportados em diferentes tipos de formatos. Por exemplo, você pode querer converter um conjunto de models (modelos) @@ -462,7 +462,7 @@ Na verdade, é a maneira padrão de exportação de models (modelos) no desenvol de Web services RESTful, como descrito na seção [Formatando Respostas](rest-response-formatting.md). -### Campos +### Campos Um campo é simplesmente um elemento nomeado no array obtido pela chamada do método [[yii\base\Model::toArray()]] de um model (modelo). @@ -530,7 +530,7 @@ public function fields() >campos `auth_key`, `password_hash` e `password_reset_token`. -## Boas Práticas +## Boas Práticas A representação dos dados, regras e lógicas de negócios estão centralizados nos models (modelos). Muitas vezes precisam ser reutilizadas em lugares diferentes. diff --git a/docs/guide-pt-BR/structure-modules.md b/docs/guide-pt-BR/structure-modules.md index 8f0f5593c77..8103b9da74c 100644 --- a/docs/guide-pt-BR/structure-modules.md +++ b/docs/guide-pt-BR/structure-modules.md @@ -11,7 +11,7 @@ módulos diferem das [aplicações](structure-applications.md) pelo fato de não poderem ser implementados sozinhos e que devem residir dentro das aplicações. -## Criando Módulos +## Criando Módulos Um módulo é organizado como um diretório que é chamado de [[yii\base\Module::basePath|caminho base]] do módulo. Dentro deste diretório, @@ -33,7 +33,7 @@ forum/ ``` -### Classe do Módulo +### Classe do Módulo Cada módulo deve ter uma única classe que estende de [[yii\base\Module]]. Esta classe deve estar localizada diretamente sob o [[yii\base\Module::basePath|caminho base]] @@ -89,7 +89,7 @@ return [ ``` -### Controllers em Módulos +### Controllers em Módulos Ao criar controllers (controladores) em um módulo, uma convenção é colocar as classes dos controllers (controladores) sob o sub-namespace `controllers` do @@ -117,7 +117,7 @@ torna-los acessíveis pela configuração da propriedade [[yii\base\Module::cont de forma similar ao [que você fez na aplicação](structure-applications.md#controller-map). -### Views em Módulos +### Views em Módulos As views (visões) devem ser colocadas no diretório `views` dentro do [[yii\base\Module::basePath|caminho base]] do módulo. Para as views (visões) @@ -135,7 +135,7 @@ layout. Se você não configurar a propriedade `layout`, o layout da aplicação usada em seu lugar. -## Usando os Módulos +## Usando os Módulos Para usar um módulo em uma aplicação, basta configurar a aplicação, listando o módulo na propriedade [[yii\base\Application::modules|modules]] da aplicação. O @@ -160,7 +160,7 @@ do array correspondente é uma [configuração](concept-configurations.md) para criação do módulo. -### Rotas +### Rotas Assim como acessar os controllers (controladores) em uma aplicação, as [rotas](structure-controllers.md#routes) são usadas para tratar os controllers @@ -174,7 +174,7 @@ então a propriedade [[yii\base\Module::defaultRoute]], na qual o valor padrão que a rota `forum` representará o controller (controlador) `default` no módulo `forum`. -### Acessando os Módulos +### Acessando os Módulos Dentro de um módulo, você poderá precisar muitas vezes obter a instância do [módulo da classe](#module-classes) para que você possa acessar o ID, os parâmetros, @@ -218,7 +218,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -### Inicializando os Módulos +### Inicializando os Módulos Alguns módulos precisam ser executados a cada requisição. O módulo [[yii\debug\Module|debug]] é um exemplo desta necessidade. Para isto, você deverá @@ -241,7 +241,7 @@ seja sempre carregado: ``` -## Módulos Aninhados +## Módulos Aninhados Os módulos podem ser aninhados em níveis ilimitados. Isto é, um módulo pode conter um outro módulo que pode conter ainda um outro módulo. Nós chamamos dos anteriores @@ -280,7 +280,7 @@ os IDs de todos os seus módulos ancestrais. Por exemplo, a rota classes. -## Boas Práticas +## Boas Práticas Os módulos são melhores usados em aplicações de larga escala, cujas características podem ser divididas em vários grupos, cada um constituídas por um conjuntos de diff --git a/docs/guide-pt-BR/structure-views.md b/docs/guide-pt-BR/structure-views.md index d2dd099a0a2..d22e23159fb 100644 --- a/docs/guide-pt-BR/structure-views.md +++ b/docs/guide-pt-BR/structure-views.md @@ -13,7 +13,7 @@ os arquivos view templates (modelos de visão) ou view template (modelo de visã apenas como views (visões). -## Criando Views (Visões) +## Criando Views (Visões) Como mencionado anteriormente, uma view (visão) é simplesmente um arquivo PHP composto por HTML ou códigos PHP. A view (visão) a seguir, apresenta um formulário @@ -58,7 +58,7 @@ desencadeiam a [renderização da view (visão)](#rendering-views). uma ótima maneira de documentar suas views (visões). -### Segurança +### Segurança Ao criar views (visões) que geram páginas HTML, é importante que você codifique ou filtre dados obtidos pelos usuários antes que os apresente. Caso contrário, @@ -98,7 +98,7 @@ use yii\helpers\HtmlPurifier; do resultado filtrado caso sua aplicação necessite de o máximo de performance. -### Organizando as Views (Visões) +### Organizando as Views (Visões) Assim como os [controllers (controladores)](structure-controllers.md) e os [models (modelos)](structure-models.md), existem convenções para organizar as @@ -122,7 +122,7 @@ o método [[yii\base\ViewContextInterface::getViewPath()]] dos controllers (controladores) ou dos widgets. -## Renderizando Views (Visões) +## Renderizando Views (Visões) A renderização das views (visões) podem ser feitas nos [controllers (controladores)](structure-controllers.md), nos @@ -139,7 +139,7 @@ methodName($view, $params = []) ``` -### Renderização pelos Controllers (Controladores) +### Renderização pelos Controllers (Controladores) Nos [controllers (controladores)](structure-controllers.md), você pode chamar os seguintes métodos para renderizar as views (visões): @@ -186,7 +186,7 @@ class PostController extends Controller ``` -### Renderização pelos Widgets +### Renderização pelos Widgets Nos [widgets](structure-widgets.md), você pode chamar os seguintes métodos do widget para renderizar views (visões). @@ -219,7 +219,7 @@ class ListWidget extends Widget ``` -### Renderização pelas Views (Visões) +### Renderização pelas Views (Visões) Você pode renderizar uma view dentro de outra view chamando um dos seguintes métodos fornecidos pelo [[yii\base\View|componente da view]]: @@ -241,7 +241,7 @@ Lembre-se que a `$this` da view (visão) refere-se ao componente da [[yii\base\V ``` -### Renderização por Outros Lugares +### Renderização por Outros Lugares Em qualquer lugar, você pode acessar o componente de aplicação [[yii\base\View|view]] pela expressão `Yii::$app->view` e chamar qualquer método mencionado anteriormente @@ -253,7 +253,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); ``` -### Views (Visões) Nomeadas +### Views (Visões) Nomeadas Ao renderizar uma view (visão), você pode especificar a view usando um nome ou o caminho do arquivo/alias. Na maioria dos casos, você usará a primeira maneira, @@ -296,7 +296,7 @@ De acordo com as regras acima, ao chamar `$this->render('view')` em um controlle view, será renderizado o arquivo de visão `@app/views/post/_overview.php`. -### Acessando Dados em Views (Visões) +### Acessando Dados em Views (Visões) Existem duas abordagens para acessar dados em um view (visão): *push* e *pull*. @@ -335,7 +335,7 @@ todo, o que poderia tornar-se tedioso e propenso a erros se uma view for compartilhada e renderizada em lugares diferentes. -### Compartilhando Dados entre as Views (Visões) +### Compartilhando Dados entre as Views (Visões) O [[yii\base\View|componente da view]] fornece a propriedade [[yii\base\View::params|params]] que você pode usar para compartilhar dados entre @@ -359,7 +359,7 @@ propriedade [[yii\base\View::params|params]]: ``` -## Layouts +## Layouts Os layouts são um tipo especial de views (visões) que representam as partes comuns das views (visões). Por exemplo, a maioria das páginas de aplicações Web @@ -369,7 +369,7 @@ no layout e incorporar o resultado da renderização de uma view em um lugar apropriado no layout. -### Criando Layouts +### Criando Layouts Pelo fato dos layouts também serem views (visões), eles podem ser criados de forma semelhante as views (visões) normais. Por padrão, os layouts são guardados @@ -440,7 +440,7 @@ inseridos nos locais onde estes métodos forem chamados. para a posição final do corpo do layout que foram registrados. -### Acessando Dados nos Layouts +### Acessando Dados nos Layouts Dentro de um layout, você tem acesso a duas variáveis predefinidas: `$this` e `$content`. A primeira refere-se ao componente da [[yii\base\View|view]] como as @@ -455,7 +455,7 @@ passar os dados de um conteúdo da view em um layout, poderá usar o método des na subseção [Compartilhando Dados entre as Views (Visões)](#sharing-data-among-views). -### Usando Layouts +### Usando Layouts Como descrito na subseção [Renderização nos Controllers (Controladores)](#rendering-in-controllers), quando você renderizar uma view (visão) chamando o método [[yii\base\Controller::render()|render()]] @@ -523,7 +523,7 @@ e o modulo de contexto obtidos na primeira etapa. O nome do layout pode ter: Caso o nome do layout não tiver uma extensão de arquivo, será usado um `.php` por padrão. -### Layouts Aninhados +### Layouts Aninhados Algumas vezes, você pode querer que um layout seja usado dentro de outro. Por exemplo, você pode querer usar diferentes layouts para cada seção de um página @@ -550,7 +550,7 @@ pode ser tanto um arquivo do layout quanto uma alias. Usando a abordagem mencionada, poderá aninhar os layouts em mais de um nível. -### Usando Blocos +### Usando Blocos Os blocos lhe permitem especificar o conteúdo da view (visão) de um local e exibi-lo em outro. Geralmente são usados em conjunto com os layouts. Por exemplo, você pode @@ -614,7 +614,7 @@ ou caso não esteja disponível exiba um conteúdo padrão. ``` -## Usando Componentes de View (Visão) +## Usando Componentes de View (Visão) Os [[yii\base\View|componentes de view (visão)]] fornecem muitos recursos relacionados às views (visões). Enquanto você pode obter os componentes de view @@ -655,7 +655,7 @@ Você também pode usar com frequência os seguintes recursos menos úteis quand estiver desenvolvendo suas páginas. -### Configuração do Título da Página +### Configuração do Título da Página Cada página deve ter um título. Normalmente, a tag do título é colocada no início de um [layout](#layouts). Mas na prática, o título é muitas vezes determinado @@ -679,7 +679,7 @@ E no layout, verifique se você tem o seguinte código sob o elemento ``: ``` -### Registrando os Meta Tags +### Registrando os Meta Tags As páginas Web geralmente precisam gerar vários meta tags necessários para diferentes fins. Assim como os títulos, os meta tags precisam estar na seção @@ -718,7 +718,7 @@ $this->registerMetaTag(['name' => 'description', 'content' => 'This website is a ``` -### Registrando as Tags Link +### Registrando as Tags Link Assim como os [meta tags](#registering-meta-tags), as tags link são úteis em muitos casos, tais como a personalização do favicon, apontamento de feed RSS ou delegar @@ -748,7 +748,7 @@ você pode especificar uma chave quando chamar o método tags link repetidas. -## Eventos da View (Visão) +## Eventos da View (Visão) [[yii\base\View|Os componentes de view (visão)]] disparam vários eventos durante o processo de renderização da view (visão). Você pode usar estes eventos para @@ -782,7 +782,7 @@ Por exemplo, o código a seguir insere a data atual no final do corpo da página ``` -## Renderizando Páginas Estáticas +## Renderizando Páginas Estáticas Páginas estáticas referem-se a páginas cujo principal conteúdo é na maior parte estática, sem a necessidade de acessar conteúdos dinâmicos pelos controllers @@ -837,7 +837,7 @@ sob o diretório `@app/views/site/pages`. Você pode configurar a propriedade serão procuradas. -## Boas Práticas +## Boas Práticas As views (visões) são os responsáveis por apresentar modelos no formato que os usuários finais desejarem. Em geral, as view (visões): diff --git a/docs/guide-pt-BR/structure-widgets.md b/docs/guide-pt-BR/structure-widgets.md index e0f5726df4b..d6620cd560b 100644 --- a/docs/guide-pt-BR/structure-widgets.md +++ b/docs/guide-pt-BR/structure-widgets.md @@ -22,7 +22,7 @@ A seguir, iremos introduzir os conhecimentos básicos sobre os widgets. Por favo consulte a documentação de classes da API se você quiser saber mais sobre o uso de um determinado widget. -## Usando Widgets +## Usando Widgets Os widgets são usados principalmente nas [views (visões)](structure-views.md). Você pode chamar o método [[yii\base\Widget::widget()]] para usar um widget em @@ -77,7 +77,7 @@ renderização de um widget, o método [[yii\base\Widget::begin()]] retorna uma instância do widget que pode ser usado para construir o seu conteúdo. -## Criando Widgets +## Criando Widgets Para criar um widget, estenda a classe [[yii\base\Widget]] e sobrescreva os métodos [[yii\base\Widget::init()]] e/ou [[yii\base\Widget::run()]]. Normalmente, @@ -192,7 +192,7 @@ sobrescrever o método [[yii\base\Widget::getViewPath()]] para personalizar o diretório que conterá os arquivos de views (visões) do widget. -## Boas Práticas +## Boas Práticas Os widgets são uma maneira orientada a objetos de reutilizar códigos de view (visão). diff --git a/docs/guide-ru/caching-data.md b/docs/guide-ru/caching-data.md index 03cf032b98e..d310fe5e42e 100644 --- a/docs/guide-ru/caching-data.md +++ b/docs/guide-ru/caching-data.md @@ -23,7 +23,7 @@ if ($data === false) { ``` -## Компоненты кэширования +## Компоненты кэширования Кэширование данных опирается на *компоненты кэширования*, которые представляют различные хранилища, такие как память, файлы и базы данных. @@ -71,7 +71,7 @@ if ($data === false) { по умолчанию многими классами (например, [[yii\web\UrlManager]]). -### Поддерживаемые хранилища +### Поддерживаемые хранилища Yii поддерживает множество хранилищ кэша: @@ -137,7 +137,7 @@ $value2 = $cache['var2']; // эквивалентно: $value2 = $cache->get('v ``` -### Ключи кэша +### Ключи кэша Каждый элемент данных, хранящийся в кэше, идентифицируется ключом. Когда вы сохраняете элемент данных в кэше, необходимо указать для него ключ. Позже, когда вы извлекаете элемент данных из кэша, вы должны предоставить соответствующий ключ. @@ -174,7 +174,7 @@ $value2 = $cache['var2']; // эквивалентно: $value2 = $cache->get('v Для обеспечения совместимости должны быть использованы только алфавитно-цифровые символы. -### Срок действия кэша +### Срок действия кэша Элементы данных, хранимые в кэше, остаются там навсегда если только они не будут удалены из-за особенностей функционирования хранилища (например, место для кэширования заполнено и старые данные удаляются). Чтобы изменить этот @@ -196,7 +196,7 @@ if ($data === false) { ``` -### Зависимости кэша +### Зависимости кэша В добавок к изменеию срока действия ключа, элемент может быть признан недействительным из-за *изменения зависимостей*. К примеру, [[yii\caching\FileDependency]] представляет собой зависимость от времени изменения файла. Когда это время @@ -230,7 +230,7 @@ $data = $cache->get($key); аннулировать кэширование данных элементов с заданным тегом(тегами) по вызову. [[yii\caching\TagDependency::invalidate()]]. -## Кэширование запросов +## Кэширование запросов Кэширование запросов - это специальная функция кэширования, построеная на основе кэширования данных. Она предназначена для кэширования результатов запросов к базе данных. @@ -255,7 +255,7 @@ $result = $db->cache(function ($db) { запросов описанное выше, имеет преимущество, поскольку можно указать гибкие зависимости кэша и это более эффективно. -### Конфигурации +### Конфигурации Кэширование запросов имеет три глобальных конфигурационных параметра через [[yii\db\Connection]]: @@ -269,7 +269,7 @@ $result = $db->cache(function ($db) { работает только если используется компонент приложения кэш. -### Использование +### Использование Вы можете использовать [[yii\db\Connection::cache()]], если у вас есть несколько SQL запросов, которые необходимо закэшировать: @@ -336,7 +336,7 @@ $result = $db->cache(function ($db) { ``` -### Ограничения +### Ограничения Кэширование запросов не работает с результатами запросов, которые содержат обработчики ресурсов. Например, при использовании типа столбца `BLOB` в некоторых СУБД, в качестве результата запроса будет выведен ресурс обработчик данных столбца. diff --git a/docs/guide-ru/caching-fragment.md b/docs/guide-ru/caching-fragment.md index a4fd662611a..8c0d612bb5f 100644 --- a/docs/guide-ru/caching-fragment.md +++ b/docs/guide-ru/caching-fragment.md @@ -22,11 +22,11 @@ if ($this->beginCache($id)) { Также как и [кэширование данных](caching-data.md), для кэширования фрагментов требуется уникальный идентификатор для определения кэшируемого фрагмента. -## Параметры кэширования +## Параметры кэширования Вызывая метод [[yii\base\View::beginCache()|beginCache()]], мы можем передать в качестве второго аргумента массив, содержащий параметры кэширования для управления кэшированием фрагмента. Заглядывая за кулисы, можно увидеть, что этот массив будет использоваться для настройки виджета [[yii\widgets\FragmentCache]], который реализует фактическое кэширование фрагментов. -### Срок хранения +### Срок хранения Наверное, наиболее часто используемым параметром является [[yii\widgets\FragmentCache::duration|duration]]. Он определяет какое количество секунд содержимое будет оставаться действительным (корректным). Следующий код помещает фрагмент в кэш не более, чем на час: @@ -43,7 +43,7 @@ if ($this->beginCache($id, ['duration' => 3600])) { Если мы не установим длительность (срок хранения), она будет равна значению по умолчанию (60 секунд). Это значит, что кэшированное содержимое станет недействительным через 60 секунд. -### Зависимости +### Зависимости Также как и [кэширование данных](caching-data.md#cache-dependencies), кэшируемое содержимое фрагмента тоже может иметь зависимости. Например, отображение содержимого сообщения зависит от того, изменено или нет это сообщение. @@ -64,7 +64,7 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ``` -### Вариации +### Вариации Кэшируемое содержимое может быть изменено в соответствии с некоторыми параметрами. Например, для веб-приложений, поддерживающих несколько языков, одна и та же часть кода может создавать содержимое на нескольких языках. Поэтому у вас может возникнуть желание кэшировать содержимое в зависимости от текущего языка приложения. @@ -81,7 +81,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ``` -### Переключение кэширования +### Переключение кэширования Иногда может потребоваться включать кэширование фрагментов только для определённых условий. Например, страницу с формой мы хотим кэшировать только тогда, когда обращение к ней произошло впервые (посредством GET запроса). Любое последующее отображение формы (посредством POST запроса) не должно быть кэшировано, потому что может содержать данные, введённые пользователем. Для этого мы задаём параметр [[yii\widgets\FragmentCache::enabled|enabled]]: @@ -95,7 +95,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## Вложенное кэширование +## Вложенное кэширование Кэширование фрагментов может быть вложенным. Это значит, что кэшируемый фрагмент окружён более крупным фрагментом (содержится в нём), который также кэшируется. Например, комментарии кэшируются во внутреннем фрагменте кэша, и они же кэшируются вместе с содержимым сообщения во внешнем фрагменте кэша. Следующий код демонстрирует как два фрагмента кэша могут быть вложенными: @@ -120,7 +120,7 @@ if ($this->beginCache($id1)) { Параметры кэширования могут быть различными для вложенных кэшей. Например, внутренний и внешний кэши в вышеприведённом примере могут иметь разные сроки хранения. Даже когда данные внешнего кэша уже не являются актуальными, внутренний кэш может содержать актуальный фрагмент. Тем не менее, обратное не верно. Если внешний кэш актуален, данные будут отдаваться из него даже если внутренний кэш содержит устаревшие данные. Следует проявлять осторожность при выставлении срока хранения и задания зависимостей для вложенных кэшей. В противном случае вы можете получить устаревшие данные. -## Динамическое содержимое +## Динамическое содержимое Когда используется кэширование фрагментов, вы можете столкнуться с ситуацией когда большой фрагмент содержимого статичен за исключением одного или нескольких мест. Например, заголовок страницы может отображаться в главном меню вместе с именем текущего пользователя. Еще одна проблема в том, что содержимое, которое было закэшировано, может содержать PHP код, который должен выполняться для каждого запроса (например код для регистрации в asset bundle). Обе проблемы могут быть решены с помощью, так называемой функции *динамического содержимого*. diff --git a/docs/guide-ru/caching-http.md b/docs/guide-ru/caching-http.md index f05a7cf6205..86e96eaced0 100644 --- a/docs/guide-ru/caching-http.md +++ b/docs/guide-ru/caching-http.md @@ -10,7 +10,7 @@ HTTP кэширование * [[yii\filters\HttpCache::cacheControlHeader|Cache-Control]] -## Заголовок `Last-Modified` +## Заголовок `Last-Modified` Заголовок `Last-Modified` использует временную метку timestamp, чтобы показать была ли страница изменена после того, как клиент закэшировал её. @@ -47,7 +47,7 @@ public function behaviors() генерирует `Last-Modified` HTTP заголовок на основе времени последнего сообщения. Когда браузер в первый раз посещает страницу `index`, то страница будет сгенерирована на сервере и отправлена в браузер; если браузер снова зайдёт на эту страницу и с тех пор ни один пост не обновится, то сервер не будет пересоздавать страницу и браузер будет использовать закэшированную на стороне клиента версию. В результате, будет пропущено как создание страницы на стороне сервера, так и передача содержания страницы клиенту. -## Заголовок `ETag` +## Заголовок `ETag` Заголовок "Entity Tag" (или коротко `ETag`) используется для передачи хэша содержания страницы. Если страница была изменена, то хэш страницы тоже изменится. Сравнивая хэш на стороне клиента с хэшем, генерируемым на стороне сервера, кэш может определить, была ли станица изменена и требуется ли её передавать заново. @@ -94,7 +94,7 @@ ETags позволяет применять более сложные и/или И если клиент отправляет как `If-None-Match` заголовок, так и `If-Modified-Since` заголовок, то только первый из них будет принят. -## Заголовок `Cache-Control` +## Заголовок `Cache-Control` Заголовок `Cache-Control` определяет общую политику кэширования страниц. Вы можете включить его отправку, настроив свойство [[yii\filters\HttpCache::cacheControlHeader]]. По-умолчанию будет отправлен следующий заголовок: @@ -102,12 +102,12 @@ ETags позволяет применять более сложные и/или Cache-Control: public, max-age=3600 ``` -## Ограничитель кэша сессий +## Ограничитель кэша сессий Когда на странице используются сессии, PHP автоматически отправляет некоторые связанные с кэшем HTTP заголовки, определённые в настройке `session.cache_limiter` в php.ini. Эти заголовки могут вмешиваться или отключать кэширование, которое вы ожидаете от `HttpCache`. Чтобы предотвратить эту проблему, по умолчанию `HttpCache` будет автоматически отключать отправку этих заголовков. Если вы хотите изменить это поведение, вы должны настроить свойство [[yii\filters\HttpCache::sessionCacheLimiter]]. Это свойство может принимать строковое значение, включая `public`, `private`, `private_no_expire` и `nocache`. Пожалуйста, обратитесь к руководству PHP о [session_cache_limiter()](http://www.php.net/manual/en/function.session-cache-limiter.php) для объяснения этих значений. -## SEO подтекст +## SEO подтекст Поисковые боты, как правило, с уважением относятся к заголовкам кэширования. Поскольку некоторые из поисковых систем имеют ограничение на количество страниц для одного домена, которые они обрабатывают в течение определенного промежутка времени, то предоставление заголовков кэширования может помочь индексации, поскольку будет уменьшено число обрабатываемых страниц. diff --git a/docs/guide-ru/concept-aliases.md b/docs/guide-ru/concept-aliases.md index e66aca3e60c..75d3c19846a 100644 --- a/docs/guide-ru/concept-aliases.md +++ b/docs/guide-ru/concept-aliases.md @@ -7,7 +7,7 @@ Yii framework, а `@web` можно использовать для получения базового URL текущего приложения. -Создание псевдонимов +Создание псевдонимов ---------------------------------------------- Для создания псевдонима пути к файлу или URL используется метод [[Yii::setAlias()]]: @@ -49,7 +49,7 @@ return [ ``` -Преобразование псевдонимов +Преобразование псевдонимов ---------------------------------------------------- Метод [[Yii::getAlias()]] преобразует корневой псевдоним в путь к файлу или URL, который этот псевдоним представляет. @@ -79,7 +79,7 @@ Yii::getAlias('@foo/bar/file.php'); // выведет: /path2/bar/file.php Если бы `@foo/bar` не был объявлен корневым псевдонимом, последняя строка вывела бы `/path/to/foo/bar/file.php`. -Использование псевдонимов +Использование псевдонимов ------------------------------------------------ Псевдонимы распознаются во многих частях Yii без необходимости предварительно вызывать [[Yii::getAlias()]] для @@ -97,7 +97,7 @@ $cache = new FileCache([ Для того, чтобы узнать поддерживает ли метод или свойство псевдонимы, обратитесь к документации API. -Заранее определённые псевдонимы +Заранее определённые псевдонимы ---------------------------------------------------------- В Yii заранее определены псевдонимы для часто используемых путей к файлам и URL: @@ -113,7 +113,7 @@ $cache = new FileCache([ Остальные псевдонимы задаются в конструкторе приложения в момент применения [конфигурации](concept-configurations.md). -Псевдонимы расширений +Псевдонимы расширений ------------------------------------------------ Для каждого [расширения](structure-extensions.md), устанавливаемого через Composer, автоматически задаётся псевдоним. diff --git a/docs/guide-ru/concept-autoloading.md b/docs/guide-ru/concept-autoloading.md index ce44227e093..30d6a712d62 100644 --- a/docs/guide-ru/concept-autoloading.md +++ b/docs/guide-ru/concept-autoloading.md @@ -9,7 +9,7 @@ > Примечание: Для простоты повествования, в этом разделе мы будем говорить только об автозагрузке классов. Тем не менее, всё описанное применимо к интерфейсам и трейтам. -Как использовать автозагрузчик Yii +Как использовать автозагрузчик Yii -------------------------------------------------------------- При использовании автозагрузчика классов Yii следует соблюдать два простых правила создания и именования классов: @@ -38,7 +38,7 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); классы будут загружены автоматически. -Карта классов +Карта классов --------------------------------- Автозагрузчик Yii поддерживает *карту классов*. Эта возможность позволяет указать путь к файлу для каждого имени класса. @@ -57,7 +57,7 @@ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; использования классов. -Использование других автозагрузчиков +Использование других автозагрузчиков ------------------------------------------------------------------ Так как Yii использует Composer в качестве менеджера зависимостей, рекомендуется дополнительно установить его автозагрузчик. @@ -81,7 +81,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); и подключите его в [входном скрипте](structure-entry-scripts.md). -Автозагрузка классов расширений +Автозагрузка классов расширений ------------------------------------------------------------------- Автозагрузчик Yii может автоматически загружать классы [расширений](structure-extensions.md) в том случае, если соблюдается diff --git a/docs/guide-ru/concept-behaviors.md b/docs/guide-ru/concept-behaviors.md index 1efc106b340..9d4ce78d0c7 100644 --- a/docs/guide-ru/concept-behaviors.md +++ b/docs/guide-ru/concept-behaviors.md @@ -10,7 +10,7 @@ обычное выполнение кода компонента. -Создание поведений +Создание поведений ---------------------------------------------- Поведения создаются путем расширения базового класса [[yii\base\Behavior]] или его наследников. Например, @@ -101,7 +101,7 @@ function ($event) { } ``` -Прикрепление поведений +Прикрепление поведений --------------------------------------------------- Прикрепить поведение к [[yii\base\Component|компоненту]] можно как статически, так и динамически. На практике @@ -198,7 +198,7 @@ $component->attachBehaviors([ Более детальная информация приведена в разделе [Конфигурации](concept-configurations.md#configuration-format). -Использование поведений +Использование поведений ------------------------------------------------ Для использования поведения, его необходимо прикрепить к [[yii\base\Component|компоненту]] как описано выше. После того, @@ -238,7 +238,7 @@ $behavior = $component->getBehavior('myBehavior'); $behaviors = $component->getBehaviors(); ``` -Отвязывание поведений +Отвязывание поведений ------------------------------------------------- Чтобы отвязать поведение от компонента, необходимо вызвать метод [[yii\base\Component::detachBehavior()]], указав имя, @@ -255,7 +255,7 @@ $component->detachBehaviors(); ``` -Использование поведения `TimestampBehavior` +Использование поведения `TimestampBehavior` -------------------------------------------------------------------------- В заключении, давайте посмотрим на [[yii\behaviors\TimestampBehavior]] — поведение, которое позволяет автоматически @@ -312,7 +312,7 @@ $user->touch('login_time'); ``` -Сравнение с трейтами +Сравнение с трейтами --------------------------------------------------- Несмотря на то, что поведения схожи с [трейтами](http://ru2.php.net/manual/ru/language.oop5.traits.php) тем, что @@ -320,7 +320,7 @@ $user->touch('login_time'); и, скорее, дополняют друг друга, а не заменяют. -### Плюсы поведений +### Плюсы поведений Поведения, как и любые другие классы, поддерживают наследование. Трейты же можно рассматривать как копипейст на уровне языка. Они наследование не поддерживают. @@ -336,7 +336,7 @@ $user->touch('login_time'); Конфликты имен, вызванные различными трейтами, требуют ручного переименования конфликтующих свойств или методов. -### Плюсы трейтов +### Плюсы трейтов Трейты являются гораздо более производительными, чем поведения, которые, являясь объектами, требуют дополнительного времени и памяти. diff --git a/docs/guide-ru/concept-configurations.md b/docs/guide-ru/concept-configurations.md index 47238473db3..ccd2d7a7e1f 100644 --- a/docs/guide-ru/concept-configurations.md +++ b/docs/guide-ru/concept-configurations.md @@ -33,7 +33,7 @@ Yii::configure($object, $config); Обратите внимание, что в этом случае массив с конфигурацией не должен содержать ключ `class`. -## Формат конфигурации +## Формат конфигурации Формат конфигурации выглядит следующим образом: @@ -77,7 +77,7 @@ Yii::configure($object, $config); ``` -## Использование конфигурации +## Использование конфигурации Конфигурации повсеместно используются в Yii. В самом начале данной главы мы узнали как создать объект с необходимыми параметрами используя метод [[Yii::createObject()]]. @@ -85,7 +85,7 @@ Yii::configure($object, $config); использования конфигурации. -### Конфигурация приложения +### Конфигурация приложения Конфигурация [приложения](structure-applications.md), пожалуй, самая сложная из используемых в фреймворке. Причина в том, что класс [[yii\web\Application|application]] содержит большое количество конфигурируемых @@ -136,7 +136,7 @@ $config = [ [приложения](structure-applications.md) и [Service Locator](concept-service-locator.md). -### Конфигурации виджетов +### Конфигурации виджетов При использовании [виджетов](structure-widgets.md) часто возникает необходимость изменить параметры виджета с помощью конфигурации. Для создания виджета можно использовать два метода: [[yii\base\Widget::widget()]] и @@ -161,7 +161,7 @@ echo Menu::widget([ Обратите внимание что параметр `class` НЕ передается, так как полное имя уже указано. -## Конфигурационные файлы +## Конфигурационные файлы Если конфигурация очень сложная, то её, как правило, разделяют по нескольким PHP файлам. Такие файлы называют *Конфигурационными файлами*. Конфигурационный файл возвращает массив PHP являющийся конфигурацией. @@ -215,7 +215,7 @@ $config = require('path/to/web.php'); ``` -## Значения конфигурации по умолчанию +## Значения конфигурации по умолчанию Метод [[Yii::createObject()]] реализован с использованием [dependency injection container](concept-di-container.md). Это позволяет задавать так называемые *значения конфигурации по умолчанию*, которые будут применены ко ВСЕМ экземплярам классов во время их инициализации методом [[Yii::createObject()]]. Значения конфигурации по умолчанию указываются с помощью метода `Yii::$container->set()` на этапе [предварительной загрузки](runtime-bootstrapping.md). @@ -233,7 +233,7 @@ $config = require('path/to/web.php'); задавать значение `maxButtonCount`. -## Константы окружения +## Константы окружения Конфигурации могут различаться в зависимости от режима, в котором происходит запуск приложения. Например, в окружении разработчика (development) вы используете базу данных `mydb_dev`, а в эксплуатационном (production) окружении diff --git a/docs/guide-ru/concept-di-container.md b/docs/guide-ru/concept-di-container.md index 7806f8859b2..4d23a464717 100644 --- a/docs/guide-ru/concept-di-container.md +++ b/docs/guide-ru/concept-di-container.md @@ -7,7 +7,7 @@ -Внедрение зависимостей +Внедрение зависимостей -------------------- Yii обеспечивает функционал контейнера внедрения зависимостей через класс [[yii\di\Container]]. Он поддерживает следующие виды внедрения зависимостей: @@ -17,7 +17,7 @@ Yii обеспечивает функционал контейнера внед * Внедрение зависимости через PHP callback. -### Внедрение зависимости через конструктор +### Внедрение зависимости через конструктор Контейнер внедрения зависимостей поддерживает внедрение зависимости через конструктор при помощи указания типов для параметров конструктора. Указанные типы сообщают контейнеру, какие классы или интерфейсы зависят от него при создании нового объекта. @@ -38,7 +38,7 @@ $foo = new Foo($bar); ``` -### Внедрение зависимости через сеттер и свойство +### Внедрение зависимости через сеттер и свойство Внедрение зависимости через сеттер и свойство поддерживается через [конфигурации](concept-configurations.md). При регистрации зависимости или при создании нового объекта, вы можете предоставить конфигурацию, которая @@ -72,7 +72,7 @@ $container->get('Foo', [], [ ``` -### Внедрение зависимости через PHP callback +### Внедрение зависимости через PHP callback В данном случае, контейнер будет использовать зарегистрированный PHP callback для создания новых экземпляров класса. Callback отвечает за разрешения зависимостей и внедряет их в соответствии с вновь создаваемыми объектами. Например, @@ -86,7 +86,7 @@ $foo = $container->get('Foo'); ``` -Регистрация зависимостей +Регистрация зависимостей ------------------------ Вы можете использовать [[yii\di\Container::set()]] для регистрации зависимостей. При регистрации требуется имя зависимости, а так же определение зависимости. @@ -152,7 +152,7 @@ $container->setSingleton('yii\db\Connection', [ ``` -Разрешение зависимостей +Разрешение зависимостей ---------------------- После регистрации зависимостей, вы можете использовать контейнер внедрения зависимостей для создания новых объектов, и контейнер автоматически разрешит зависимости их экземпляра и их внедрений во вновь создаваемых объектах. Разрешение зависимостей рекурсивно, то есть @@ -235,7 +235,7 @@ $lister = new UserLister($finder); ``` -Практическое использование +Практическое использование --------------- Yii создаёт контейнер внедрения зависимостей когда вы подключаете файл `Yii.php` во [входном скрипте](structure-entry-scripts.md) @@ -294,7 +294,7 @@ class HotelController extends Controller Теперь, если вы попытаетесь получить доступ к контроллеру снова, то экземпляр `app\components\BookingService` будет создан и введён в качестве 3-го параметра конструктора контроллера. -Когда следует регистрировать зависимости +Когда следует регистрировать зависимости ----------------------------- Поскольку зависимости необходимы тогда, когда создаются новые объекты, то их регистрация должна быть сделана @@ -304,7 +304,7 @@ class HotelController extends Controller * Если вы разработчик распространяемого [расширения](structure-extensions.md), то вы можете зарегистрировать зависимости в загрузочном классе расширения. -Итог +Итог ------- Как dependency injection, так и [service locator](concept-service-locator.md) являются популярными паттернами проектирования, которые позволяют создавать программное обеспечение в слабосвязанной и более тестируемой манере. diff --git a/docs/guide-ru/concept-events.md b/docs/guide-ru/concept-events.md index 78d62ef2936..8e2b9f9f8b8 100644 --- a/docs/guide-ru/concept-events.md +++ b/docs/guide-ru/concept-events.md @@ -6,7 +6,7 @@ Для работы с событиями Yii использует базовый класс [[yii\base\Component]]. Если класс должен инициировать события, его нужно унаследовать от [[yii\base\Component]] или потомка этого класса. -Обработчики событий +Обработчики событий -------------- Обработчик события - это [callback-функция PHP](http://www.php.net/manual/ru/language.types.callable.php), которая выполняется при срабатывании события, к которому она присоединена. Можно использовать следующие callback-функции: @@ -31,7 +31,7 @@ function ($event) { - [[yii\base\Event::data|custom data]]: данные, которые были предоставлены во время присоединения обработчика события (будет описано ниже) -Присоединение обработчиков событий +Присоединение обработчиков событий ------------------------ Обработчики события присоединяются с помощью метода [[yii\base\Component::on()]]. Например: @@ -90,7 +90,7 @@ $foo->on(Foo::EVENT_HELLO, function ($event) { }, $data, false); ``` -Инициирование событий +Инициирование событий ----------------- События инициируются при вызове метода [[yii\base\Component::trigger()]]. Методу нужно передать *имя события*, а при необходимости - объект события, в котором описываются параметры, передаваемые обработчикам событий. Например: @@ -147,7 +147,7 @@ class Mailer extends Component При вызове метода [[yii\base\Component::trigger()]] будут вызваны все обработчики, присоединенные к указанному событию. -Отсоединение обработчиков событий +Отсоединение обработчиков событий ------------------------ Для отсоединения обработчика от события используется метод [[yii\base\Component::off()]]. Например: @@ -175,7 +175,7 @@ $foo->off(Foo::EVENT_HELLO); ``` -Обработчики событий на уровне класса +Обработчики событий на уровне класса -------------------------- Во всех предыдущих примерах мы рассматривали присоединение событий *на уровне экземпляров*. Есть случаи, когда необходимо обрабатывать события, которые инициируются *любым* экземпляром класса, а не только конкретным экземпляром. В таком случае присоединять обработчик события к каждому экземпляру класса не нужно. Достаточно присоединить обработчик *на уровне класса*, вызвав статический метод [[yii\base\Event::on()]]. @@ -223,7 +223,7 @@ Event::off(Foo::className(), Foo::EVENT_HELLO); ``` -Глобальные события +Глобальные события ------------- Yii поддерживает так называемые *глобальные события*, которые на самом деле основаны на нестандартном использовании описанного выше механизма событий. Для глобальных событий нужен глобально доступный объект-синглетон, например, экземпляр приложения - [application](structure-applications.md). diff --git a/docs/guide-ru/input-validation.md b/docs/guide-ru/input-validation.md index c80ca63aa74..1d45d8e7781 100644 --- a/docs/guide-ru/input-validation.md +++ b/docs/guide-ru/input-validation.md @@ -20,7 +20,7 @@ if ($model->validate()) { ``` -## Правила проверки +## Правила проверки Для того, чтобы `validate()` действительно работал, нужно объявить правила проверки атрибутов. Правила для проверки нужно указать в методе `[[yii\base\Model::rules()]]`. В следующем примере показано, как @@ -90,7 +90,7 @@ public function rules() объявленными в `rules()`. -### Настройка сообщений об ошибках +### Настройка сообщений об ошибках Большинство валидаторов имеют сообщения об ошибках по умолчанию, которые будут добавлены к модели когда его атрибуты не проходят проверку. Например, `[[yii\validators\RequiredValidator|required]]` валидатор добавил к модели сообщение об ошибке "Имя пользователя не может быть пустым." когда атрибут `username` не удовлетворил правила этого валидатора. @@ -113,7 +113,7 @@ public function rules() Вы можете настроить эти сообщения об ошибках, как в настройках валидаторов, так и непосредственно в правилах проверки. -### События валидации +### События валидации Когда вызывается метод `[[yii\base\Model::validate()]]` он инициализирует вызов двух методов, которые можно переопределить, чтобы настроить процесс проверки: @@ -123,7 +123,7 @@ public function rules() * `[[yii\base\Model::afterValidate()]]`: выполнение по умолчанию вызовет `[[yii\base\Model::EVENT_AFTER_VALIDATE]]` событие. Вы можете либо переопределить этот метод или обрабатывать это событие, чтобы сделать некоторую постобработку данных(Например, отформатировать данные удобным для дальнейшей обработки образом), метод вызывается после валидации. -### Условные валидации +### Условные валидации Для проверки атрибутов только при выполнении определенных условий, например если один атрибут зависит от значения другого атрибута можно использовать `[[yii\validators\Validator::when|when]]` свойство, чтобы определить такие условия. Например: @@ -161,7 +161,7 @@ function ($model, $attribute) ``` -### Фильтрация данных +### Фильтрация данных Пользователь частво вводит данные которые нужно предварительно отфильтровать или предварительно обработать(очистить). Например, вы хотите обрезать пробелы вокруг `username`. Вы можете использовать правила валидации для @@ -185,7 +185,7 @@ function ($model, $attribute) они будут обрабатывать значения и обратно возвращать результат работы. Фильтры по сути выполняют предобработку входящих данных. -### Обработка пустых входных данных +### Обработка пустых входных данных Если входные данные представлены из HTML-формы, часто нужно присвоить некоторые значения по умолчанию для входных данных, если они не заполнены. Вы можете сделать это с помощью @@ -220,7 +220,7 @@ function ($model, $attribute) `required`, и `trim` будут обрабатывать пустые входные данные. -## Специальная валидация +## Специальная валидация Иногда вам нужно сделать специальную валидацию для значений, которые не связаны с какой-либо модели. @@ -291,13 +291,13 @@ public function actionSearch($name, $email) `$model->name` и `$model->email`. -## Создание Валидаторов +## Создание Валидаторов Кроме того, используя [основные валидаторы](tutorial-core-validators.md), включенные в релизы Yii, вы также можете создавать свои собственные валидаторы. Вы можете создавать встроенные валидаторы или автономные валидаторы. -### Встроенные Валидаторы +### Встроенные Валидаторы Встроенный валидатор наследует методы модели или использует анонимную функцию. Описание метода/функции: @@ -361,7 +361,7 @@ class MyForm extends Model > ``` -### Автономные валидаторы +### Автономные валидаторы Автономный валидатор - это класс, расширяющий `[[yii\validators\Validator]]` или его дочерних класс. Вы можете реализовать свою логику проверки путем переопределения метода @@ -392,7 +392,7 @@ class CountryValidator extends Validator реализуются путем вызова `validateValue()`. -## Валидация на строне клиента +## Валидация на строне клиента Проверка на стороне клиента на основе JavaScript целесообразна, когда конечные пользователи вводят входные данные через HTML-формы, так как эта проверка позволяет пользователям узнать, ошибки ввода @@ -406,7 +406,7 @@ class CountryValidator extends Validator как описано в предыдущих пунктах. -### Использование валидации на стороне клиента +### Использование валидации на стороне клиента Многие [основные валидаторы](tutorial-core-validators.md) поддерживают проверку на стороне клиента out-of-the-box. Все, что вам нужно сделать, это просто использовать `[[yii\widgets\ActiveForm]]` для построения HTML-форм. @@ -471,7 +471,7 @@ HTML-форма построена с помощью следующего код `[[yii\widgets\ActiveField::enableClientValidation]]` установив значение false. -### Реализация проверки на стороне клиента +### Реализация проверки на стороне клиента Чтобы создать валидатор, который поддерживает проверку на стороне клиента, вы должны реализовать метод `[[yii\validators\Validator::clientValidateAttribute()]]` возвращающий фрагмент кода JavaScript, @@ -532,7 +532,7 @@ JS; > ] > ``` -### Отложенная валидация +### Отложенная валидация Если Вам необходимо выполнить асинхронную проверку на стороне клиента, вы можете создавать [Deferred objects](http://api.jquery.com/category/deferred-object/). Например, чтобы выполнить @@ -609,7 +609,7 @@ JS; ``` -### AJAX валидация +### AJAX валидация Некоторые проверки можно сделать только на стороне сервера, потому что только сервер имеет необходимую информацию. Например, чтобы проверить логин пользователя на уникальность, необходимо проверить логин в diff --git a/docs/guide-ru/rest-authentication.md b/docs/guide-ru/rest-authentication.md index 304deebfcd4..84b89b5db4f 100644 --- a/docs/guide-ru/rest-authentication.md +++ b/docs/guide-ru/rest-authentication.md @@ -114,7 +114,7 @@ class User extends ActiveRecord implements IdentityInterface (такими, как заголовок `WWW-Authenticate` для HTTP Basic Auth). -## Авторизация +## Авторизация После аутентификации пользователя вы, вероятно, захотите проверить, есть ли у него или у неё разрешение на выполнение запрошенного действия с запрошенным ресурсом. Этот процесс называется *авторизацией* и подробно описан diff --git a/docs/guide-ru/rest-controllers.md b/docs/guide-ru/rest-controllers.md index 15d61b213a1..b7024828cd2 100644 --- a/docs/guide-ru/rest-controllers.md +++ b/docs/guide-ru/rest-controllers.md @@ -25,7 +25,7 @@ * Авторизация пользователя для запрашиваемых действия и ресурса. -## Создание классов контроллеров +## Создание классов контроллеров При создании нового класса контроллера в имени класса обычно используется название типа ресурса в единственном числе. Например, контроллер, отвечающий за предоставление информации о пользователях, @@ -45,7 +45,7 @@ public function actionView($id) ``` -## Фильтры +## Фильтры Большинство возможностей RESTful API, предоставляемых [[yii\rest\Controller]], реализовано на основе [фильтров](structure-filters.md). В частности, следующие фильтры будут выполняться в том порядке, в котором они перечислены: @@ -77,14 +77,14 @@ public function behaviors() ``` -## Наследование от `ActiveController` +## Наследование от `ActiveController` Если ваш класс контроллера наследуется от [[yii\rest\ActiveController]], вам следует установить значение его свойства [[yii\rest\ActiveController::modelClass||modelClass]] равным имени класса ресурса, который вы планируете обслуживать с помощью этого контроллера. Класс ресурса должен быть унаследован от [[yii\db\ActiveRecord]]. -### Настройка действий +### Настройка действий По умолчанию [[yii\rest\ActiveController]] предоставляет набор из следующих действий: @@ -121,7 +121,7 @@ public function prepareDataProvider() Чтобы узнать, какие опции доступны для настройки классов отдельных действий, обратитесь к соответствующим разделам справочника классов. -### Выполнение контроля доступа +### Выполнение контроля доступа При предоставлении ресурсов через RESTful API часто бывает нужно проверять, имеет ли текущий пользователь разрешение на доступ к запрошенному ресурсу (или ресурсам) и манипуляцию им (или ими). Для [[yii\rest\ActiveController]] эта задача diff --git a/docs/guide-ru/rest-quick-start.md b/docs/guide-ru/rest-quick-start.md index 61e6202da75..ad3655f710d 100644 --- a/docs/guide-ru/rest-quick-start.md +++ b/docs/guide-ru/rest-quick-start.md @@ -22,7 +22,7 @@ Yii включает полноценный набор средств для у вами была ранее создана модель [[yii\db\ActiveRecord|ActiveRecord]] (класс `app\models\User`). -## Создание контроллера +## Создание контроллера Во-первых, создадим класс контроллера `app\controllers\UserController`: @@ -42,7 +42,7 @@ class UserController extends ActiveController выборки данных. -## Настройка правил URL +## Настройка правил URL Далее изменим настройки компонента `urlManager` в конфигурации приложения: @@ -60,7 +60,7 @@ class UserController extends ActiveController Настройки выше добавляет правило для контроллера `user`, которое предоставляет доступ к данным пользователя через красивые URL и логичные глаголы HTTP. -## Пробуем +## Пробуем Вот так просто мы и создали RESTful API для доступа к данным пользователя. Api нашего сервиса, сейчас включает в себя: @@ -159,7 +159,7 @@ Content-Type: application/xml > описано в разделе «[Форматирование ответа](rest-response-formatting.md)». -## Резюме +## Резюме Используя Yii в качестве RESTful API фреймворка, мы используем реализуем точки входа API как действия контроллеров. Контроллер используется для организации действий, которые относятся к определённому типу ресурса. diff --git a/docs/guide-ru/rest-resources.md b/docs/guide-ru/rest-resources.md index 9920c92ab6c..c38308343dd 100644 --- a/docs/guide-ru/rest-resources.md +++ b/docs/guide-ru/rest-resources.md @@ -17,7 +17,7 @@ RESTful API строятся вокруг доступа к *ресурсам* [[yii\base\Model]], возвращаются всего его public свойства. -## Поля +## Поля Когда ресурс включается в ответ RESTful API, необходимо сеарилизовать его в строку. Yii разбивает этот процесс на два этапа. Сначала ресурс конвертируется в массив при помощи [[yii\rest\Serializer]]. На втором этапе массив сеарилизуется в строку @@ -44,7 +44,7 @@ http://localhost/users?fields=id,email&expand=profile ``` -### Переопределение `fields()` +### Переопределение `fields()` По умолчанию, [[yii\base\Model::fields()]] возвращает все атрибуты модели как поля, а [[yii\db\ActiveRecord::fields()]] возвращает только те атрибуты, которые были объявлены в схеме БД. @@ -89,7 +89,7 @@ public function fields() > `fields()`. В приведённом выше примере мы исключаем `auth_key`, `password_hash` и `password_reset_token`. -### Переопределение `extraFields()` +### Переопределение `extraFields()` По умолчанию, [[yii\base\Model::extraFields()]] ничего не возвращает, а [[yii\db\ActiveRecord::extraFields()]] возвращает названия заданных в БД связей. @@ -126,7 +126,7 @@ public function extraFields() ``` -## Ссылки +## Ссылки Согласно [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS), расшифровывающемуся как Hypermedia as the Engine of Application State, RESTful API должны возвращать достаточно информации для того, чтобы клиенты могли определить возможные действия над ресурсами. @@ -167,7 +167,7 @@ class User extends ActiveRecord implements Linkable ``` -## Коллекции +## Коллекции Объекты ресурсов могут группироваться в *коллекции*. Каждая коллекция содержит список объектов ресурсов одного типа. diff --git a/docs/guide-ru/rest-response-formatting.md b/docs/guide-ru/rest-response-formatting.md index 7f2368808db..6e87aba439d 100644 --- a/docs/guide-ru/rest-response-formatting.md +++ b/docs/guide-ru/rest-response-formatting.md @@ -12,7 +12,7 @@ [[yii\web\Response::formatters|response]]. -## Согласование содержимого +## Согласование содержимого Yii поддерживает согласование содержимого с помощью фильтра [yii\filters\ContentNegotiator]]. Базовый класс контроллера RESTful API - [[yii\rest\Controller]] - использует этот фильтр под именем `contentNegotiator`. @@ -80,7 +80,7 @@ public function behaviors() форматов ответа, которые установлены в [[yii\web\Response::formatters]]. -## Сериализация данных +## Сериализация данных Как уже описывалось выше, [[yii\rest\Serializer]] - это центральное место, отвечающее за конвертацию объектов ресурсов или коллекций в массивы. Он реализует интерфейсы [[yii\base\ArrayableInterface]] и [[yii\data\DataProviderInterface]]. diff --git a/docs/guide-ru/runtime-requests.md b/docs/guide-ru/runtime-requests.md index eee2bec36a9..3e6e608a8d8 100644 --- a/docs/guide-ru/runtime-requests.md +++ b/docs/guide-ru/runtime-requests.md @@ -4,7 +4,7 @@ Запросы, сделанные к приложению, представлены в терминах [[yii\web\Request]] объектов, которые предоставляют информацию о параметрах запроса, HTTP заголовках, cookies и т.д. Для получения доступа к текущему запросу вы должны обратиться к объекту `request` [application component](structure-application-components.md), который по умолчанию является экземпляром [[yii\web\Request]]. -## Параметры запроса +## Параметры запроса Чтобы получить параметры запроса, вы должны вызвать методы [[yii\web\Request::get()|get()]] и [[yii\web\Request::post()|post()]] компонента `request`. Они возвращают значения переменных `$_GET` и `$_POST` соответственно. Например, @@ -50,7 +50,7 @@ $param = $request->getBodyParam('id'); Вы можете настроить способ обработки этих параметров через настройку свойства [[yii\web\Request::parsers]]. -## Методы запроса +## Методы запроса Вы можете получить названия HTTP метода, используемого в текущем запросе, обратившись к выражению `Yii::$app->request->method`. Также имеется целый набор логических свойств для проверки соответствует ли текущий метод определённому типу запроса. @@ -65,7 +65,7 @@ if ($request->isPost) { // является ли текущий запрос POS if ($request->isPut) { // является ли текущий запрос PUT запросом } ``` -## URL запроса +## URL запроса Компонент `request` предоставляет множество способов изучения текущего запрашиваемого URL. @@ -83,7 +83,7 @@ if ($request->isPut) { // является ли текущий запрос PUT * [[yii\web\Request::serverPort|serverPort]]: вернёт 80, что является адресом порта, который использует веб-сервер. -## HTTP заголовки +## HTTP заголовки Вы можете получить информацию о HTTP заголовках через [[yii\web\HeaderCollection|header collection]], возвращаемыми свойством [[yii\web\Request::headers]]. Например, @@ -115,7 +115,7 @@ if ($headers->has('User-Agent')) { // есть ли в запросе загол какой тип содержимого и язык должен использоваться в ответе. Фильтр реализует согласование содержимого на основе свойств и методов, описанных выше. -## Информация о клиенте +## Информация о клиенте Вы можете получить имя хоста и IP адрес пользователя через свойства [[yii\web\Request::userHost|userHost]] и [[yii\web\Request::userIP|userIP]] соответственно. Например, diff --git a/docs/guide-ru/runtime-responses.md b/docs/guide-ru/runtime-responses.md index 4d3d80c316f..22d85d7d640 100644 --- a/docs/guide-ru/runtime-responses.md +++ b/docs/guide-ru/runtime-responses.md @@ -12,7 +12,7 @@ В данном разделе мы опишем, как составлять ответы и отправлять их пользователям. -## Код состояния +## Код состояния Первое, что вы делаете при построении ответа, — определяете, был ли успешно обработан запрос. Это реализуется заданием свойству [[yii\web\Response::statusCode]] значения, которое может быть одним из валидных @@ -55,7 +55,7 @@ throw new \yii\web\HttpException(402); ``` -## HTTP-заголовки +## HTTP-заголовки Вы можете отправлять HTTP-заголовки, работая с [[yii\web\Response::headers|коллекцией заголовков]] компонента `response`: @@ -76,7 +76,7 @@ $values = $headers->remove('Pragma'); пользователю до вызова [[yii\web\Response::send()]]. -## Тело ответа +## Тело ответа Большинство ответов должны иметь тело, содержащее то, что вы хотите показать пользователям. @@ -154,7 +154,7 @@ public function actionInfo() [внедрением зависимости](concept-di-container.md), чтобы применить общую конфигурацию к вашим новым объектам ответа. -## Перенаправление браузера +## Перенаправление браузера Перенаправление браузера основано на отправке HTTP-заголовка `Location`. Так как данная возможность широко применяется, Yii имеет средства для её использования. @@ -196,7 +196,7 @@ public function actionOld() дополнительный код для поддержки AJAX-перенаправления. -## Отправка файлов +## Отправка файлов Как и перенаправление браузера, отправка файлов является ещё одной возможностью, основанной на определённых HTTP-заголовках. Yii предоставляет набор методов для решения различных задач по отправке файлов. Все они поддерживают HTTP-заголовок range. @@ -236,7 +236,7 @@ Web-серверов: - Cherokee: [X-Sendfile and X-Accel-Redirect](http://www.cherokee-project.com/doc/other_goodies.html#x-sendfile) -## Отправка ответа +## Отправка ответа Содержимое ответа не отправляется пользователю до вызова метода [[yii\web\Response::send()]]. По умолчанию он вызывается автоматически в конце метода [[yii\base\Application::run()]]. Однако, чтобы ответ был отправлен немедленно, вы можете diff --git a/docs/guide-ru/start-databases.md b/docs/guide-ru/start-databases.md index 2a1efae4585..7a465c25018 100644 --- a/docs/guide-ru/start-databases.md +++ b/docs/guide-ru/start-databases.md @@ -13,7 +13,7 @@ Обратите внимание, чтобы усвоить этот раздел, вы должны иметь базовые знания и навыки использования баз данных. В частности, вы должны знать, как создать базу данных, и как выполнять SQL запросы, используя клиентские инструменты для работы с БД. -Подготавливаем базу данных +Подготавливаем базу данных ---------------------- Для начала, создайте базу данных под названием `yii2basic`, из которой вы будете получать данные в вашем приложении. @@ -42,7 +42,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); На данный момент у вас есть база данных под названием `yii2basic`, и внутри неё таблица `country` с тремя столбцами, содержащими десять строк данных. -Настраиваем подключение к БД +Настраиваем подключение к БД --------------------------- Перед продолжением убедитесь, что у вас установлены PHP-расширение [PDO](http://www.php.net/manual/en/book.pdo.php) и драйвер PDO для используемой вами базы данных (н-р `pdo_mysql` для MySQL). Это базовое требование в случае использования вашим приложением реляционной базы данных. @@ -68,7 +68,7 @@ return [ описывающей то, как экземпляр [приложения](structure-applications.md) должен быть инициализирован. Для детальной информации, пожалуйста, обратитесь к разделу [Конфигурации](concept-configurations.md). -Создаём потомка Active Record +Создаём потомка Active Record ------------------------- Чтобы представлять и получать данные из таблицы `country`, создайте класс - потомок [Active Record](db-active-record.md), под названием `Country`, и сохраните его в файле `models/Country.php`. @@ -113,7 +113,7 @@ $country->save(); Вы можете найти подробную информацию в разделе [Active Record](db-active-record.md). В качестве альтернативы, вы также можете взаимодействовать с базой данных, используя более низкоуровневый способ доступа, называемый [Data Access Objects](db-dao.md). -Создаём Action +Создаём Action ------------------ Для того, чтобы показать данные по странам конечным пользователям, вам надо создать новый action. Вместо размещения нового action'a в контроллере `site`, как вы делали в предыдущих разделах, будет иметь больше смысла создать новый контроллер специально для всех действий, относящихся к данным по странам. Назовите новый контроллер `CountryController`, и создайте action `index` внутри него, как показано ниже. @@ -160,7 +160,7 @@ Action `index` вызывает `Country::find()`. Данный метод Activ В конце кода action `index` выводит view с именем `index`, и передаёт в него данные по странам вместе c информацией о пагинации. -Создаём View +Создаём View --------------- Первым делом создайте поддиректорию с именем `country` внутри директории `views`. Эта папка будет использоваться для хранения всех view, выводимых контроллером `country`. Внутри директории `views/country` создайте файл с именем `index.php`, содержащий следующий код: @@ -187,7 +187,7 @@ View имеет 2 части относительно отображения д Во второй части выводится виджет [[yii\widgets\LinkPager]], используя информацию о пагинации, переданную из action во view. Виджет `LinkPager` отображает набор постраничных кнопок. Клик по любой из них обновит данные по странам в соответствующей странице. -Испытываем в действии +Испытываем в действии ------------- Чтобы увидеть, как работает весь вышеприведённый код, перейдите по следующей ссылке в своём браузере: @@ -210,7 +210,7 @@ http://hostname/index.php?r=country/index&page=2 * Виджет [[yii\widgets\LinkPager|LinkPager]] выводит кнопки страниц используя URL'ы, созданные [[yii\data\Pagination::createUrl()|Pagination]]. Эти URL'ы будут содержать параметр запроса `page`, который представляет различные номера страниц. * Если вы кликните по кнопке "2", сработает и обработается новый запрос для маршрута `country/index`. Таким образом новый запрос стран будет иметь параметры `LIMIT 5 OFFSET 5` и вернет следующие пять стран для отображения. -Резюме +Резюме ------- В этом разделе вы научились работать с базой данных. Также вы научились получать и отображать данные с постраничной разбивкой с помощью [[yii\data\Pagination]] и [[yii\widgets\LinkPager]]. diff --git a/docs/guide-ru/start-forms.md b/docs/guide-ru/start-forms.md index 81d861bb761..97db95f4b9e 100644 --- a/docs/guide-ru/start-forms.md +++ b/docs/guide-ru/start-forms.md @@ -14,7 +14,7 @@ * Как создать HTML форму в [представлении](structure-views.md). -Создание модели +Создание модели --------------------------------------------- В файле `models/EntryForm.php` создайте класс модели `EntryForm` как показано ниже. Он будет использоваться для @@ -58,7 +58,7 @@ class EntryForm extends Model станет равным `true`. С помощью [[yii\base\Model::getErrors|errors]] можно узнать, какие именно ошибки возникли. -Создание действия +Создание действия ------------------------------------------------ Далее создайте действие `entry` в контроллере `site`, точно так же, как вы делали это ранее. @@ -108,7 +108,7 @@ class SiteController extends Controller был использован компонент `request`. -Создание представления +Создание представления ---------------------------------------------------- В заключение, создаём два представления с именами `entry-confirm` и `entry`, которые отображаются действием `entry` из @@ -154,7 +154,7 @@ use yii\widgets\ActiveForm; Далее для генерации кнопки отправки данных вызывается метод [[yii\helpers\Html::submitButton()]]. -Попробуем +Попробуем -------------------------------------- Чтобы увидеть всё созданное в работе, откройте в браузере следующий URL: @@ -175,7 +175,7 @@ http://hostname/index.php?r=site/entry -### Как работает вся эта «магия» +### Как работает вся эта «магия» Вы, скорее всего, задаётесь вопросом о том, как же эта HTML форма работает на самом деле. Весь процесс может показаться немного волшебным: то как показываются подписи к полям, ошибки проверки данных при некорректном вводе и то что всё это @@ -199,7 +199,7 @@ http://hostname/index.php?r=site/entry Как вы узнаете позже, разрабатывать новые виджеты очень просто. Многое из представлений можно вынести в виджеты, чтобы использовать это повторно в других местах и упростить тем самым разработку в будущем. -Резюме +Резюме ----------------------------- В данном разделе вы попробовали каждую часть шаблона проектирования MVC. Вы изучили как создавать классы моделей diff --git a/docs/guide-ru/start-gii.md b/docs/guide-ru/start-gii.md index 5fc4b3f252d..03117681506 100644 --- a/docs/guide-ru/start-gii.md +++ b/docs/guide-ru/start-gii.md @@ -12,7 +12,7 @@ * Как настроить код, генерируемый Gii. -Запускаем Gii +Запускаем Gii ------------ [Gii](tool-gii.md) предствален в Yii как [модуль](structure-modules.md). Вы можете активировать Gii, @@ -54,7 +54,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -Генерация класса Active Record +Генерация класса Active Record --------------------------------- Чтобы использовать Gii для генерации класса Active Record, выберите "Генератор модели" (нажав на ссылку на главной странице Gii). И заполните форму следующим образом: @@ -75,7 +75,7 @@ http://hostname/index.php?r=gii После этого вы увидите страницу подтверждения, указывающую на то, что код был успешно сгенерирован. Если файл существовал до этого, вы также увидите сообщение о том, что он был перезаписан заново сгенерированным кодом. -Создание CRUD кода +Создание CRUD кода -------------------- CRUD расшифровывается как Create, Read, Update и Delete, предоставляющий четыре основные функции, выполняемые над данными на большинстве веб-сайтов. Чтобы создать функциональность CRUD используя Gii, выберите "CRUD Генератор" (нажав на ссылку на главной странице Gii). Для нашей таблицы «country» заполните полученную форму следующим образом: @@ -93,7 +93,7 @@ CRUD расшифровывается как Create, Read, Update и Delete, п Если вы уже создали файлы `controllers/CountryController.php` и `views/country/index.php` (в разделе о базах данных), установите флажок "overwrite", чтобы заменить их. (Предыдущие версии не поддерживают CRUD полностью) -Испытываем в действии +Испытываем в действии ------------- Чтобы увидеть как всё это работает, перейдите по следующему URL, используя ваш браузер: @@ -120,7 +120,7 @@ http://hostname/index.php?r=country/index > Информация: Gii разработан как тонконастраиваемый и расширяемый инструмент генерации кода. Используя его с умом, вы можете значительно ускорить скорость разработки приложений. Для более подробной информации, пожалуйста, обратитесь к разделу [Gii](tool-gii.md). -Заключение +Заключение ------- В этом разделе вы узнали, как использовать Gii для генерации кода, реализующего полную функциональность CRUD для данных, хранящихся в таблице базы данных. diff --git a/docs/guide-ru/start-hello.md b/docs/guide-ru/start-hello.md index 2b5ffd4387e..91f6d70554f 100644 --- a/docs/guide-ru/start-hello.md +++ b/docs/guide-ru/start-hello.md @@ -14,7 +14,7 @@ * Как приложение отсылает запросы к [действию](structure-controllers.md). -Создание Действия +Создание Действия ------------------------------------------------ Для нашей задачи потребуется [действие](structure-controllers.md) `say`, которое читает параметр `message` из @@ -62,7 +62,7 @@ Yii использует префикс `action` чтобы различать Результат отображения при помощи `return` передаётся приложению, которое отдаёт его пользователю. -Создание представления +Создание представления --------------------------------------------------- [Представления](structure-views.md) являются скриптами, которые используются для формирования тела ответа. Для нашего @@ -88,7 +88,7 @@ use yii\helpers\Html; скриптом представления, будет передано пользователю приложением. -Попробуем +Попробуем -------------------------------------- После создания действия и представления вы можете перейти на новую страницу по следующему URL: @@ -121,7 +121,7 @@ http://hostname/index.php?r=site/say&message=Привет+мир имени класса контроллера `PostCommentController`. -Резюме +Резюме ----------------------------- В этом разделе вы затронули тему контроллеров и представлений в паттерне MVC. Вы создали действие как часть контроллера, diff --git a/docs/guide-ru/start-installation.md b/docs/guide-ru/start-installation.md index 9a1914c717c..76dfe3af16e 100644 --- a/docs/guide-ru/start-installation.md +++ b/docs/guide-ru/start-installation.md @@ -8,7 +8,7 @@ > Примечание: В отличие от Yii 1, после стандартной установки Yii 2 мы получаем как фреймворк, так и шаблон приложения. -Установка при помощи Composer +Установка при помощи Composer ----------------------- Если Composer еще не установлен это можно сделать по инструкции на @@ -52,7 +52,7 @@ Composer установит Yii (шаблонное приложение basic) > Старайтесь не использовать нестабильную версию Yii на рабочих серверах потому как она может внезапно поломать код. -Установка из архива +Установка из архива ------------------------------- Установка Yii из архива состоит из трёх шагов: @@ -67,7 +67,7 @@ Composer установит Yii (шаблонное приложение basic) 'cookieValidationKey' => 'enter your secret key here', ``` -Другие опции установки +Другие опции установки -------------------------- Выше приведены инструкции по установке Yii в виде базового приложения готового к работе. @@ -81,7 +81,7 @@ Composer установит Yii (шаблонное приложение basic) [шаблон приложения advanced](tutorial-advanced-app.md). -Проверка установки +Проверка установки ---------------------- После установки приложение будет доступно по следующему URL: @@ -111,7 +111,7 @@ http://localhost/basic/web/index.php (например, `pdo_mysql` для MySQL). -Настройка веб сервера +Настройка веб сервера ----------------------- > Информация: можете пропустить этот подраздел если вы только начали знакомиться с фреймворком и пока не разворачиваете @@ -134,7 +134,7 @@ http://localhost/basic/web/index.php приложения как описано в разделе «[Работа на Shared хостинге](tutorial-shared-hosting.md)». -### Рекомендуемые настройки Apache +### Рекомендуемые настройки Apache Добавьте следующее в `httpd.conf` Apache или в конфигурационный файл виртуального хоста. Не забудьте заменить `path/to/basic/web` на корректный путь к `basic/web`. @@ -157,7 +157,7 @@ DocumentRoot "path/to/basic/web" ``` -### Рекомендуемые настройки Nginx +### Рекомендуемые настройки Nginx PHP должен быть установлен как [FPM SAPI](http://php.net/manual/ru/install.fpm.php) для [Nginx](http://wiki.nginx.org/). Используйте следующие параметры Nginx и не забудьте заменить `path/to/basic/web` на корректный путь к `basic/web` и diff --git a/docs/guide-ru/start-workflow.md b/docs/guide-ru/start-workflow.md index 4315572e129..0f1c669ee76 100644 --- a/docs/guide-ru/start-workflow.md +++ b/docs/guide-ru/start-workflow.md @@ -5,7 +5,7 @@ > Информация: далее в данном руководстве предполагается, что Yii установлен в директорию `basic/web`, которая, в свою очередь, установлена как корневой каталог в настройках Web сервера. В результате, обратившись по URL `http://hostname/index.php`, Вы получите доступ к приложению, расположенному в `basic/web`. Детальнее с процессом начальной настройки можно познакомиться в разделе [Установка Yii](start-installation.md). -Функционал +Функционал --------------- Установленный шаблон простого приложения состоит из четырех страниц: @@ -20,7 +20,7 @@ В самой нижней части окна Вы будете видеть системные сообщения Yii - журнал, отладочную информацию, сообщения об ошибках, запросы к базе данных и т.п. Выводом данной информации руководит [встроенный отладчик](tool-debugger.md), он записывает и отображает информацию о ходе выполнения приложения. -Структура приложения Yii +Структура приложения Yii --------------------- Ниже приведен список основных директорий и файлов вашего приложения (считаем, что приложение установлено в директорию `basic`): @@ -57,7 +57,7 @@ basic/ корневой каталог приложения [Приложение](structure-applications.md) обрабатывает входящие запросы при помощи [компонентов](concept-components.md) и отправляет запрос контроллеру. [Виджеты](structure-widgets.md) используются в [Видах](structure-views.md) для построения динамических интерфейсов сайта. -Жизненный цикл пользовательского запроса +Жизненный цикл пользовательского запроса ----------------- На диаграмме показано как приложение обрабатывает запрос. diff --git a/docs/guide-ru/structure-application-components.md b/docs/guide-ru/structure-application-components.md index 73ef2a27bc0..6368e832dba 100755 --- a/docs/guide-ru/structure-application-components.md +++ b/docs/guide-ru/structure-application-components.md @@ -48,7 +48,7 @@ В большинстве случаев вы можете просто создать локальный компонент и использовать его при необходимости. -## Встроенные компоненты приложения +## Встроенные компоненты приложения В Yii есть несколько *встроенных* компонентов приложения, с фиксированными ID и конфигурациями по умолчанию. Например, компонент [[yii\web\Application::request|request]] используется для сбора информации о запросе пользователя и разбора его в diff --git a/docs/guide-ru/structure-applications.md b/docs/guide-ru/structure-applications.md index 58cb20c26a2..a1a8d2a43d8 100644 --- a/docs/guide-ru/structure-applications.md +++ b/docs/guide-ru/structure-applications.md @@ -12,7 +12,7 @@ Как можно догадаться по названию, первый тип в основном занимается обработкой веб запросов, в то время как последний - консольных команд. -## Конфигурации приложения +## Конфигурации приложения Когда [входной скрипт](structure-entry-scripts.md) создаёт приложение, он загрузит [конфигурацию](concept-configurations.md) и применит её к приложению, например: @@ -33,27 +33,27 @@ $config = require(__DIR__ . '/../config/web.php'); [конфигурационных файлов](concept-configurations.md#configuration-files), например, `web.php` - файл в приведённом выше примере. -## Свойства приложений +## Свойства приложений Существует много важных свойств приложения, которые вы настраиваете в конфигурациях приложения. Эти свойства обычно описывают окружение, в котором работает приложение. Например, приложение должно знать каким образом загружать [контроллеры](structure-controllers.md), где хранить временные файлы, и т. д. Ниже мы рассмотрим данные свойства. -### Обязательные свойства +### Обязательные свойства В любом приложении, вы должны настроить минимум два свойства: [[yii\base\Application::id|id]] и [[yii\base\Application::basePath|basePath]]. -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] Свойство [[yii\base\Application::id|id]] это уникальный индекс приложения, который отличает его от других приложений. В основном это используется внутрисистемно. Хоть это и не обязательно, но для лучшей совместимости рекомендуется использовать буквенно-цифровые символы при указании индекса приложения. -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] Свойство [[yii\base\Application::basePath|basePath]] указывает на корневую директорию приложения. Эта директория содержит весь защищенный исходный код приложения. В данной директории обычно могут находится поддиректории `models`, `views`, @@ -69,12 +69,12 @@ $config = require(__DIR__ . '/../config/web.php'); времененную дирректорию runtime). -### Важные свойства +### Важные свойства Свойства, указанные в этом подразделе, часто нуждаются в преднастройке т.к. они разнятся от приложения к приложению. -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] Это свойство позволяет настроить вам множество [псевдонимов](concept-aliases.md) в рамках массива. Ключами массива являются имена псевдонимов, а значениями массива - соответствующие значения пути. Например, @@ -92,7 +92,7 @@ $config = require(__DIR__ . '/../config/web.php'); а не вызовов метода [[Yii::setAlias()]]. -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] Данное свойство является очень удобным, оно позволяет указать массив компонентов, которые должны быть загружены @@ -165,7 +165,7 @@ if (YII_ENV_DEV) { быть загружено. Таким образом вы должны использовать начальную загрузку разумно. -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] Данное свойство поддерживается только [[yii\web\Application|веб приложениями]]. Оно указывает [действие контроллера](structure-controllers.md), которое должно обрабатывать все входящие запросы от пользователя. @@ -187,7 +187,7 @@ if (YII_ENV_DEV) { ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] Данное свойство является наиболее важным. Оно позволяет вам зарегистрировать список именованных компонентов, называемых [компоненты приложения](#structure-application-components.md), которые Вы можете использовать в других местах. @@ -216,7 +216,7 @@ if (YII_ENV_DEV) { Более подробная информация приведена в разделе [Компоненты приложения](structure-application-components.md). -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] Данное свойство позволяет вам задавать соответствия(mapping) между ID контроллера и произвольным классом контроллера. По-умолчанию, Yii задает соответствие между ID контроллера и его классом согласно данному [соглашению](#controllerNamespace) @@ -243,7 +243,7 @@ if (YII_ENV_DEV) { классов(полное название класса с пространством имен) контроллера или [конфигурация](concept-configurations.md). -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] Данное свойство указывает пространство имен, в котором по умолчанию должны находится названия классов контроллеров. По-умолчанию значение равно `app\controllers`. Если ID контроллера `post`, то согласно соглашению, соответствующий класс @@ -259,7 +259,7 @@ if (YII_ENV_DEV) { В случае, если вы хотите переопределить соответствия как описано выше, вы можете настроить свойство [controllerMap](#controllerMap). -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] Данное свойство указывает язык приложения, на котором содержимое страницы должно быть отображено конечному пользователю. По-умолчанию значение данного свойства равно `en`, что означает "Английский". Если ваше приложение должно поддерживать @@ -276,7 +276,7 @@ if (YII_ENV_DEV) { Более детальная информация приведена в разделе [Интернационализация](tutorial-i18n.md). -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] Данное свойство указывает [модули](structure-modules.md), которые содержаться в приложении. @@ -301,7 +301,7 @@ ID модулей. Например, Более детальная информация приведена в разделе [Модули](structure-modules.md). -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] Свойство указывает название приложения, которое может быть показано конечным пользователям. В отличие от свойства [[yii\base\Application::id|id]], которое должно быть уникальным, значение данного свойства нужно в @@ -310,7 +310,7 @@ ID модулей. Например, Если ваш код не использует данное свойство, то вы можете не настраивать его. -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] Данное свойство указывает массив глобально доступных параметров приложения. Вместо того, чтобы использовать жестко фиксированные числа и строки в вашем коде, лучше объявить их параметрами приложения в едином месте и @@ -335,7 +335,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; приложения, не касаясь зависимого кода. -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] Данное свойство указывает язык на котором написан код приложения. По-умолчанию значение равно `'en-US'`, что означает "Английский" (США). Вы должны настроить данное свойство соответствующим образом, если содержимое в вашем коде является не @@ -347,7 +347,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Более детальная информация приведена в разделе [Интернационализация](tutorial-i18n.md). -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] Данное свойство предоставляет альтернативный способ установки временной зоны в процессе работы приложения. Путем указания данного свойства, вы по существу вызываете PHP функцию @@ -360,27 +360,27 @@ $width = \Yii::$app->params['thumbnail.size'][0]; ] ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] Данное свойство указывает версию приложения. По-умолчанию значение равно `'1.0'`. Вы можете не настраивать это свойство, если ваш код не использует его. -### Полезные свойства +### Полезные свойства Свойства, указанные в данном подразделе, не являются часто конфигурируемыми, т. к. их значения по умолчанию соответствуют общепринятым соглашениям. Однако, вы можете их настроить, если вам нужно использовать другие соглашения. -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] Свойство указывает кодировку, которую использует приложение. По-умолчанию значение равно `'UTF-8'`, которое должно быть оставлено как есть для большинства приложения, только если вы не работаете с устаревшим кодом, который использует большее количество данных не юникода. -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] Свойство указывает [маршрут](runtime-routing.md), который должно использовать приложение, когда он не указан во входящем запросе. Маршрут может состоять из ID модуля, ID контроллера и/или ID действия. Например, `help`, @@ -396,7 +396,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; выполните команду `yii` без аргументов, вам будет отображена справочная информация. -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] Данное свойство указывает список [расширений](structure-extensions.md), которые установлены и используются приложением. По-умолчанию, значением данного свойства будет массив, полученный из файла `@vendor/yiisoft/extensions.php`. Файл `extensions.php` @@ -430,7 +430,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Расширение также может определять несколько [псевдонимов](concept-aliases.md). -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] Данное свойство указывает имя шаблона по умолчанию, который должен быть использовать при формировании [представлений](structure-views.md). Значение по умолчанию равно `'main'`, означающее, что должен быть использован шаблон `main.php` в [папке шаблонов](#layoutPath). @@ -440,7 +440,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Для отключения использования шаблона, вы можете указать данное свойство как `false`, хотя это используется очень редко. -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] Свойство указывает путь, по которому следует искать шаблоны. Значение по умолчанию равно `layouts`, означающее подпапку в [папке представлений](#viewPath). Если значение [папки представлений](#viewPath) является значением по умолчанию, то @@ -449,7 +449,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Вы можете настроить данное свойство как папку так и как [псевдоним](concept-aliases.md). -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] Свойство указывает путь, по которому хранятся временные файлы, такие как: лог файлы, кэш файлы. По-умолчанию значение равно папке, которая представлена псевдонимом пути `@app/runtime`. @@ -461,13 +461,13 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Для упрощения работы с данной папкой, Yii предоставляет предопределенный псевдоним пути `@runtime`. -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] Данное свойство указывает базовую папку,где содержаться все файлы представлений. Значение по умолчанию представляет собой псевдоним `@app/views`. Вы можете настроить данное свойство как папку так и как [псевдоним](concept-aliases.md). -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] Свойство указывает папку сторонних библиотек, которые используются и управляются [Composer](http://getcomposer.org). Она содержит все сторонние библиотеки используемые приложением, включая Yii фреймворк. Значение по умолчанию @@ -479,13 +479,13 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Для упрощения работы с данной папкой, Yii предоставляет предопределенный псевдоним пути `@vendor`. -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] Данное свойство поддерживается только [[yii\console\Application|консольными приложениями]]. Оно указывает нужно ли использовать встроенные в Yii консольные команды. Значение по умолчанию равно `true`. -## События приложения +## События приложения В течение жизненного цикла приложения, возникает несколько событий. Вы можете назначать обработчики событий в конфигурации приложения следующим образом: @@ -509,7 +509,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] Данное событие возникает *до* того как приложение начинает обрабатывать входящий запрос. Настоящее имя события - `beforeRequest`. @@ -520,7 +520,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; от некоторых параметров. -### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] Данное событие возникает *после* того как приложение заканчивает обработку запроса, но *до* того как произойдет отправка ответа. Настоящее имя события - `afterRequest`. @@ -532,7 +532,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; конечному пользователю. Эти события возникают *после* текущего события. -### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] Событие возникает *до* того как будет выполнено [действие контроллера](structure-controllers.md). Настоящее имя события - `beforeAction`. @@ -559,7 +559,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; свойство [[yii\base\ActionEvent::isValid]] равным `false`, все последующие события не возникнут. -### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] Событие возникает *после* выполнения [действия контроллера](structure-controllers.md). Настоящее имя события - `afterAction`. @@ -586,7 +586,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; и наконец в приложениях. -## Жизненный цикл приложения +## Жизненный цикл приложения Когда [входной скрипт](structure-entry-scripts.md) выполняется для обработки запроса, приложение будет развиваться согласно следующему жизненному циклу: diff --git a/docs/guide-ru/structure-controllers.md b/docs/guide-ru/structure-controllers.md index c933fb71cee..5fe8b1f764d 100644 --- a/docs/guide-ru/structure-controllers.md +++ b/docs/guide-ru/structure-controllers.md @@ -7,7 +7,7 @@ и в конечном итоге сгенерируют исходящие ответы. -## Действия +## Действия Контроллеры состоят из *действий*, которые являются основными блоками, к которым может обращаться конечный пользователь и запрашивать исполнение того или иного функционала. В контроллере может быть одно или несколько действий. @@ -60,7 +60,7 @@ class PostController extends Controller что созданной модели. В противном случае он отобразит представление `create`, через которое пользователь может заполнить нужные данные. -## Маршруты +## Маршруты Конечные пользователи обращаются к действиям через так называемые *маршруты*. Маршрут это строка, состоящая из следующих частей: @@ -85,7 +85,7 @@ ModuleID/ControllerID/ActionID Секция [Маршрутизация](runtime-routing.md) содержит более подробную информацию о том как маршруты сопоставляются с действиями. -## Создание контроллеров +## Создание контроллеров В [[yii\web\Application|Веб приложениях]], контроллеры должны быть унаследованы от [[yii\web\Controller]] или его потомков. Аналогично для [[yii\console\Application|консольных приложений]], контроллеры должны быть унаследованы от [[yii\console\Controller]] или @@ -102,7 +102,7 @@ class SiteController extends Controller ``` -### ID контроллеров +### ID контроллеров Обычно контроллер сделан таким образом, что он должен обрабатывать запросы, связанные с определенным ресурсом. Именно по этим причинам, ID контроллеров обычно являются существительные, ссылающиеся на ресурс, который они обрабатывают. @@ -119,7 +119,7 @@ ID контроллеров также могут содержать префи -### Правила наименования классов контроллеров +### Правила наименования классов контроллеров Названия классов контроллеров могут быть получены из ID контроллеров следующими способами: @@ -146,7 +146,7 @@ ID контроллеров также могут содержать префи в несколько категорий и не хотите использовать [модули](structure-modules.md). -### Карта контроллеров +### Карта контроллеров Вы можете сконфигурировать [[yii\base\Application::controllerMap|карту контроллеров]] для того, чтобы преодолеть описанные выше ограничения именования ID контроллеров и названий классов. В основном это очень удобно, когда вы используете @@ -172,7 +172,7 @@ ID контроллеров также могут содержать префи ] ``` -### Контроллер по умолчанию +### Контроллер по умолчанию Каждое приложение имеет контроллер по умолчанию, указанный через свойство [[yii\base\Application::defaultRoute]]. Когда в запросе не указан [маршрут](#ids-routes), тогда будет использован маршрут указанный в данном свойстве. @@ -188,7 +188,7 @@ ID контроллеров также могут содержать префи ``` -## Создание действий +## Создание действий Создание действий не представляет сложностей также как и объявление так называемых *методов действий* в классе контроллера. Метод действия это *public* метод, имя которого начинается со слова `action`. Возвращаемое значение метода действия представляет собой ответные данные, @@ -214,7 +214,7 @@ class SiteController extends Controller ``` -### ID действий +### ID действий В основном действие разрабатывается для какой-либо конкретной обработки ресурса. По этой причине, ID действий в основном являются глаголами, такими как `view`, `update`, и т. д. @@ -229,7 +229,7 @@ class SiteController extends Controller Отдельные действия, с другой стороны, в основном создаются для использования в различных контроллерах или при использовании в [расширениях](structure-extensions.md). -### Встроенные действия +### Встроенные действия Встроенные действия это те действия, которые определены в рамках методов контроллера, как мы это уже обсудили. @@ -250,7 +250,7 @@ class SiteController extends Controller использовать некоторые действия в различных местах, или если вы хотите перераспределить действия, вы должны определить его как *отдельной действие*. -### Отдельные действия +### Отдельные действия Отдельные действия определяются в качестве классов, унаследованных от [[yii\base\Action]] или его потомков. Например, в Yii релизах, присутствуют [[yii\web\ViewAction]] и [[yii\web\ErrorAction]], оба из которых являются @@ -298,7 +298,7 @@ class HelloWorldAction extends Action ``` -### Результаты действий +### Результаты действий Возвращаемое значение методов действий или метода `run()` отдельного действия очень важно. Оно является результатом выполнения соответствующего действия. @@ -324,7 +324,7 @@ public function actionForward() ``` -### Параметры действий +### Параметры действий Методы действий для встроенных действий и методы `run()` для отдельных действий могут принимать параметры, называемые *параметры действий*. Их значения берутся из запросов. Для [[yii\web\Application|Веб приложений]], @@ -375,7 +375,7 @@ public function actionView(array $id, $version = null) о параметрах консольных приложений представлено в секции [Консольные команды](tutorial-console.md). -### Действие по умолчанию +### Действие по умолчанию Каждый контроллер имеет действие, указанное через свойство [[yii\base\Controller::defaultAction]]. Когда [маршрут](#ids-routes) содержит только ID контроллера, то подразумевается, что действие контроллера по умолчанию @@ -401,7 +401,7 @@ class SiteController extends Controller ``` -## Жизненный цикл контроллера +## Жизненный цикл контроллера При обработке запроса, [приложение](structure-applications.md) создаст контроллер, основываясь на запрошенном [маршруте](#routes). Для выполнения запроса, контроллер пройдет через следующие этапы @@ -425,7 +425,7 @@ class SiteController extends Controller 6. Приложение, получив результат выполнения действия, присвоит его объекту [response](runtime-responses.md). -## Лучшие практики +## Лучшие практики В хорошо-организованных приложения, контроллеры обычно очень тонкие, и содержат лишь несколько строк кода. Если ваш контроллер слишком сложный, это обычно означает, что вам надо провести рефакториг его и перенести какой-либо код diff --git a/docs/guide-ru/structure-entry-scripts.md b/docs/guide-ru/structure-entry-scripts.md index 29a5d545e34..3cbea246e1e 100644 --- a/docs/guide-ru/structure-entry-scripts.md +++ b/docs/guide-ru/structure-entry-scripts.md @@ -23,7 +23,7 @@ * Вызывают метод [[yii\base\Application::run()]] приложения для обработки входящего запроса. -## Веб приложения +## Веб приложения Ниже представлен код входного скрипта для [базового шаблона приложения](start-installation.md). @@ -47,7 +47,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## Консольные приложения +## Консольные приложения Ниже представлен аналогичный код входного скрипта консольного приложения: @@ -83,7 +83,7 @@ exit($exitCode); ``` -## Объявление констант +## Объявление констант Входные скрипты являются наилучшим местом для объявления глобальных констант. Yii поддерживают следующие три константы: diff --git a/docs/guide-ru/structure-extensions.md b/docs/guide-ru/structure-extensions.md index b8a9677fb52..6b570cf0f9a 100644 --- a/docs/guide-ru/structure-extensions.md +++ b/docs/guide-ru/structure-extensions.md @@ -11,7 +11,7 @@ общего назначения, которые могут быть использованы с Yii, мы будем называть "пакет" или "библиотека". -## Использование расширений +## Использование расширений Чтобы использовать расширение, вам необходимо установить его. Большинство расширений распространяются как пакеты [Composer](https://getcomposer.org/), которые могут быть установлены посредством следующих двух шагов: @@ -68,7 +68,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) > Информация: Классы расширений автоматически загружаются [автозагрузчиком классов Yii](concept-autoloading.md). -### Ручная установка расширений +### Ручная установка расширений В некоторых редких случаях вы можете захотеть установить некоторые расширения вручную, а не полагаться на Composer. Чтобы сделать это, вы должны @@ -92,7 +92,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ``` -## Создание расширений +## Создание расширений Вы можете захотеть создать расширение, когда чувствуете необходимость поделиться своим хорошим кодом с другими людьми. Расширение может содержать любой код, который вам нравится, например, класс-помощник, виджет, модуль и т.д. @@ -110,7 +110,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) пользователи могли найти и установить ваше расширение, используя Composer. -### `composer.json` +### `composer.json` Каждый пакет Composer должен иметь файл `composer.json` в своей корневой директории. Этот файл содержит метаданные о пакете. Вы можете найти полную спецификацию по этому файлу в @@ -158,7 +158,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) ``` -#### Название пакета +#### Название пакета Каждый пакет Composer должен иметь название, которое однозначно идентифицирует пакет среди остальных. Название пакета имеет формат `имяРазработчика/названиеПроекта`. Например, в пакете `yiisoft/yii2-imagine`, `yiisoft` является именем @@ -170,7 +170,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) `моёИмя/yii2-mywidget`. Это позволит пользователям легче определить, что пакет является расширением Yii2. -#### Тип пакета +#### Тип пакета Важно указать тип пакета вашего расширения как `yii2-extension`, чтобы пакет можно было распознать как расширение Yii во время установки. @@ -181,7 +181,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) [[yii\base\Application::extensions]]). -#### Зависимости +#### Зависимости Ваше расширение зависит от Yii (естественно). Вы можете посмотреть список зависимостей в секции `require`, входящей в файл `composer.json`. Если ваше расширение зависит от других расширений или сторонних библиотек, то вы также должны их @@ -189,7 +189,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) зависимости. Используйте стабильные версии зависимостей, когда будет выпущена стабильная версия вашего расширения. -#### Автозагрузка классов +#### Автозагрузка классов Для того, чтобы ваши классы были загружены автозагрузчиком классов Yii или автозагрузчиком классов Composer, вы должны внести секцию `autoload` в файл `composer.json`, как показано ниже: @@ -213,14 +213,14 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) Например, указанная в секции `autoload` запись будет соответствовать псевдониму `@yii/imagine`. -### Рекомендованные практики +### Рекомендованные практики Поскольку расширения предназначены для использования другими людьми, вам придётся приложить дополнительные усилия в процессе разработки. Ниже приведены некоторые общие и рекомендованные практики для создания высококачественных расширений. -#### Пространства имён +#### Пространства имён Во избежание конфликтов имён, а также для того, чтобы ваши классы были автозагружаемыми, вы должны следовать [стандарту PSR-4](http://www.php-fig.org/psr/psr-4/) или [стандарту PSR-0](http://www.php-fig.org/psr/psr-0/) в @@ -234,7 +234,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) использования в коде ядра Yii. -#### Классы начальной загрузки +#### Классы начальной загрузки Иногда вы можете захотеть выполнить некоторый код своего расширения в стадии [начальной загрузки](runtime-bootstrapping.md) приложения. Например, ваше расширение может ответить на событие @@ -279,7 +279,7 @@ class MyBootstrapClass implements BootstrapInterface запроса. -#### Работа с базами данных +#### Работа с базами данных Ваше расширение может иметь доступ к базам данных. Не думайте, что приложения, которые используют ваше расширение, всегда используют `Yii::$db` в качестве соединения с БД. Вместо этого вам следует объявить свойство `db` в классах, @@ -294,7 +294,7 @@ class MyBootstrapClass implements BootstrapInterface - избегать использования [Active Record](db-active-record.md) в миграциях. -#### Использование ресурсов +#### Использование ресурсов Если ваше расширение является виджетом или модулем, то есть вероятность, что оно потребует некоторых [ресурсов](structure-assets.md) для работы. Например, модуль может отображать некоторые страницы, которые содержат @@ -309,7 +309,7 @@ class MyBootstrapClass implements BootstrapInterface людей. -### Интернационализация и локализация +### Интернационализация и локализация Ваше расширение может быть использовано в приложениях, поддерживающих разные языки! Поэтому, если ваше расширение отображает содержимое конечному пользователю, вы должны попробовать @@ -324,7 +324,7 @@ class MyBootstrapClass implements BootstrapInterface Для более подробной информации вы можете обратиться к разделу [Интернационализация](tutorial-i18n.md) -#### Тестирование +#### Тестирование Вы хотите, чтобы ваше расширение было стабильным и не приносило проблем другим людям. Для достижения этой цели вы должны протестировать ваше расширение перед его публикацией. @@ -335,12 +335,12 @@ class MyBootstrapClass implements BootstrapInterface функциональные тесты. Для более подробной информации вы можете обратиться в раздел [Тестирование](test-overview.md). -#### Версионирование +#### Версионирование Вы можете давать каждому выпуску вашего расширения номер версии (например, `1.0.1`). Мы рекомендуем вам придерживаться практик [семантического версионирования](http://semver.org) при определении, какой номер версии должен использоваться. -#### Публикация +#### Публикация Чтобы позволить другим людям узнать о вашем расширении, необходимо опубликовать его. @@ -372,7 +372,7 @@ class MyBootstrapClass implements BootstrapInterface Вы можете обратиться к [стилю кодирования фреймворка](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style). -## Базовые расширения +## Базовые расширения Yii предоставляет следующие базовые расширения, которые разрабатывает и поддерживает команда разработчиков Yii. Они все зарегистрированы на [Packagist](https://packagist.org/) и могут быть легко установлены, как описано в подразделе diff --git a/docs/guide-ru/structure-filters.md b/docs/guide-ru/structure-filters.md index c08a9e2f257..690d8dc959f 100644 --- a/docs/guide-ru/structure-filters.md +++ b/docs/guide-ru/structure-filters.md @@ -9,7 +9,7 @@ Фильтр может состоять из *пре-фильтра* (фильтрующая логика применяется *перед* действиями) и/или *пост-фильтра* (логика, применяемая *после* действий). -## Использование фильтров +## Использование фильтров Фильтры являются особым видом [поведений](concept-behaviors.md). Их использование ничем не отличается от [использования поведений](concept-behaviors.md#attaching-behaviors). Вы можете объявлять фильтры в классе контроллера @@ -58,7 +58,7 @@ public function behaviors() - Применяются фильтры объявленные в приложении, в порядке обратном, перечисленному в `behaviors()`. -## Создание фильтров +## Создание фильтров При создании нового фильтра действия, необходимо наследоваться от [[yii\base\ActionFilter]] и переопределить методы [[yii\base\ActionFilter::beforeAction()|beforeAction()]] и/или [[yii\base\ActionFilter::afterAction()|afterAction()]]. @@ -94,13 +94,13 @@ class ActionTimeFilter extends ActionFilter ``` -## Стандартные фильтры +## Стандартные фильтры Yii предоставляет набор часто используемых фильтров, которые находятся, в основном, в пространстве имен `yii\filters`. Далее вы будете кратко ознакомлены с ними. -### [[yii\filters\AccessControl|AccessControl]] +### [[yii\filters\AccessControl|AccessControl]] Фильтр `AccessControl` обеспечивает простое управление доступом, основанное на наборе правил [[yii\filters\AccessControl::rules|rules]]. В частности, перед тем как действие начинает выполнение, фильтр `AccessControl` проверяет список указанных правил, пока не @@ -136,7 +136,7 @@ public function behaviors() Более подробно об управлении доступом вы можете прочитать в разделе [Авторизация](security-authorization.md). -### Фильтр метода аутентификации +### Фильтр метода аутентификации Фильтр метода аутентификации используется для аутентификации пользователя различными способами, такими как [HTTP Basic Auth](http://en.wikipedia.org/wiki/Basic_access_authentication), [OAuth 2](http://oauth.net/2/). @@ -164,7 +164,7 @@ public function behaviors() RESTful, смотрите в разделе [Authentication](rest-authentication.md). -### [[yii\filters\ContentNegotiator|ContentNegotiator]] +### [[yii\filters\ContentNegotiator|ContentNegotiator]] ContentNegotiator поддерживает согласование формата ответа и языка приложения. Он пытается определить формат ответа и/или язык, путём проверки `GET` параметров и HTTP заголовка `Accept`. @@ -225,7 +225,7 @@ use yii\web\Response; -### [[yii\filters\HttpCache|HttpCache]] +### [[yii\filters\HttpCache|HttpCache]] Фильтр HttpCache реализовывает кэширование на стороне клиента, используя HTTP заголовки `Last-Modified` и `Etag`: @@ -250,7 +250,7 @@ public function behaviors() Подробнее об использовании HttpCache можно прочитать в разделе [HTTP Кэширование](caching-http.md). -### [[yii\filters\PageCache|PageCache]] +### [[yii\filters\PageCache|PageCache]] Фильтр PageCache реализует кэширование целых страниц на стороне сервера. В следующем примере PageCache применяется только в действии `index` для кэширования всей страницы в течение не более чем 60 секунд или пока количество записей в таблице `post` @@ -282,14 +282,14 @@ public function behaviors() Подробнее об использовании PageCache читайте в разделе [Кэширование страниц](caching-page.md). -### [[yii\filters\RateLimiter|RateLimiter]] +### [[yii\filters\RateLimiter|RateLimiter]] Ограничитель количества запросов в единицу времени *(RateLimiter)* реализует алгоритм ограничения запросов, основанный на [алгоритме leaky bucket](http://en.wikipedia.org/wiki/Leaky_bucket). В основном, он используется при создании RESTful API. Подробнее об использовании данного фильтра пожно прочитать в разделе [Ограничение запросов](rest-rate-limiting.md). -### [[yii\filters\VerbFilter|VerbFilter]] +### [[yii\filters\VerbFilter|VerbFilter]] Фильтр по типу запроса *(VerbFilter)* проверяет, разрешено ли запросам HTTP выполнять затребованные ими действия. Если нет, то будет выброшено исключение HTTP с кодом 405. В следующем примере в фильтре по типу запроса указан обычный @@ -315,7 +315,7 @@ public function behaviors() } ``` -### [[yii\filters\Cors|Cors]] +### [[yii\filters\Cors|Cors]] Совместное использование разными источниками [CORS](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) - это механизм, который позволяет использовать различные ресурсы (шрифты, скрипты, и т.д.) с отличных от основного сайта доменов. diff --git a/docs/guide-ru/structure-modules.md b/docs/guide-ru/structure-modules.md index 18024fbda78..075523cea5b 100644 --- a/docs/guide-ru/structure-modules.md +++ b/docs/guide-ru/structure-modules.md @@ -4,7 +4,7 @@ Модули - это законченные программные блоки, состоящие из [моделей](structure-models.md), [представлений](structure-views.md), [контроллеров](structure-controllers.md) и других вспомогательных компонентов. При установке модулей в [приложение](structure-applications.md), конечный пользователь получает доступ к их контроллерам. По этой причины модули часто рассматриваются как миниатюрные приложения. В отличии от [приложений](structure-applications.md), модули нельзя развертывать отдельно. Модули должны находиться внутри приложений. -## Создание модулей +## Создание модулей Модуль помещается в директорию, которая называется [[yii\base\Module::basePath|базовым путем]] модуля. Так же как и в директории приложения, в этой директории существуют поддиректории `controllers`, `models`, `views` и другие, в которых размещаются контроллеры, модели, представления и другие элементы. В следующем примере показано примерное содержимое модуля: @@ -21,7 +21,7 @@ forum/ ``` -### Классы модулей +### Классы модулей Каждый модуль объявляется с помощью уникального класса, который наследуется от [[yii\base\Module]]. Этот класс должен быть помещен в корне [[yii\base\Module::basePath|базового пути]] модуля и поддерживать [автозагрузку](concept-autoloading.md). Во время доступа к модулю будет создан один экземпляр соответствующего класса модуля. Как и [экземпляры приложения](structure-applications.md), экземпляры модулей нужны, чтобы код модулей мог получить общий доступ к данным и компонентам. @@ -68,7 +68,7 @@ return [ ``` -### Контроллеры в модулях +### Контроллеры в модулях При создании контроллеров модуля принято помещать классы контроллеров в подпространство `controllers` пространства имен класса модуля. Это также подразумевает, что файлы классов контроллеров должны располагаться в директории `controllers` [[yii\base\Module::basePath|базового пути]] модуля. Например, чтобы описать контроллер `post` в модуле `forum` из предыдущего примера, класс контроллера объявляется следующим образом: @@ -86,14 +86,14 @@ class PostController extends Controller Изменить пространство имен классов контроллеров можно задав свойство [[yii\base\Module::controllerNamespace]]. Если какие-либо контроллеры выпадают из этого пространства имен, доступ к ним можно осуществить, настроив свойство [[yii\base\Module::controllerMap]], аналогично тому, [как это делается в приложении](structure-applications.md#controller-map). -### Представления в модулях +### Представления в модулях Представления модуля также следует поместить в в поддиректорию `views` [[yii\base\Module::basePath|базового пути]] модуля. Виды, которые рендерит контроллер модуля, должны располагаться в директории `views/ControllerID`, где `ControllerID` соответствует [идентификатору контроллера](structure-controllers.md#routes). Например, если контроллер реализуется классом `PostController`, представления следует разместить в поддиректории `views/post` [[yii\base\Module::basePath|базового пути]] модуля. В модуле можно задать [шаблон](structure-views.md#layouts), который будет использоваться для рендеринга всех представлений контроллерами модуля. По умолчанию шаблон помещается в директорию `views/layouts`, а свойство [[yii\base\Module::layout]] должно указывать на имя этого шаблона. Если не задать свойство `layout`, модуль будет использовать шаблон, заданный в приложении. -## Использование модулей +## Использование модулей Чтобы задействовать модуль в приложении, достаточно включить его в свойство [[yii\base\Application::modules|modules]] в конфигурации приложения. Следующий код в [конфигурации приложения](structure-applications.md#application-configurations) задействует модуль `forum`: @@ -111,12 +111,12 @@ class PostController extends Controller Свойству [[yii\base\Application::modules|modules]] присваивается массив, содержащий конфигурацию модуля. Каждый ключ массива представляет собой *идентификатор модуля*, который однозначно определяет модуль среди других модулей приложения, а соответствующий массив - это [конфигурация](concept-configurations.md) для создания модуля. -### Маршруты +### Маршруты Как маршруты приложения используются для обращения к контроллерам приложения, [маршруты](structure-controllers.md#routes) модуля используются, чтобы обращаться к контроллерам этого модуля. Маршрут контроллера в модуле должен начинаться с идентификатора модуля, за которым следуют идентификатор контроллера и идентификатор действия. Например, если в приложении задействован модуль `forum`, то маршрут `forum/post/index` соответствует действию `index` контроллера `post` этого модуля. Если маршрут состоит только из идентификатора модуля, то контроллер и действие определяются исходя из свойства [[yii\base\Module::defaultRoute]], которое по умолчанию равно `default`. Таким образом, маршрут `forum` соответствует контроллеру `default` модуля `forum`. -### Получение доступа к модулям +### Получение доступа к модулям Зачастую внутри модуля может потребоваться доступ к экземпляру [класса модуля](#module-classes), через который получаются идентификатор модуля, его параметры, компоненты, и т. п. Это можно сделать с помощью следующей конструкции: @@ -147,7 +147,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -### Предзагрузка модулей +### Предзагрузка модулей Может потребоваться запускать некоторые модули при каждом запросе. Модуль [[yii\debug\Module|debug]] - один из таких модулей. Для этого список идентификаторов таких модулей необходимо указать в свойстве [[yii\base\Application::bootstrap|bootstrap]] приложения. @@ -166,7 +166,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -## Вложенные модули +## Вложенные модули Модули могут вкладываться друг в друга без ограничений по глубине. Иными словами, в модуле содержится модуль, в который входит еще один модуль, и т. д. Первый модуль называется *родительским*, остальные - *дочерними*. Дочерние модули объявляются в свойстве [[yii\base\Module::modules|modules]] родительских модулей. Например, @@ -194,7 +194,7 @@ class Module extends \yii\base\Module > Информация: Метод [[yii\base\Module::getModule()|getModule()]] возвращает только те дочерние модули, которые принадлежат родительскому модулю непосредственно. В свойстве [[yii\base\Application::loadedModules]] содержится список загруженных модулей, в том числе прямых и косвенных потомков, с индексированием по имени класса. -## Лучшие практики +## Лучшие практики Модули лучше всего подходят для крупных приложений, функционал которых можно разделить на несколько групп, в каждой из которых функции тесно связаны между собой. Каждая группа функций может разрабатываться в виде модуля, над которым работает один разработчик или одна команда. diff --git a/docs/guide-ru/structure-views.md b/docs/guide-ru/structure-views.md index 05969bee995..0fa0395227e 100644 --- a/docs/guide-ru/structure-views.md +++ b/docs/guide-ru/structure-views.md @@ -6,7 +6,7 @@ и код PHP, отвечающий за представление и внешний вид. Виды управляются компонентом приложения [[yii\web\View|view]], который содержит часто используемые методы для упорядочивания видов и их рендеринга. Для упрощения, мы будем называть виды - шаблоны просто видами. -## Создание видов +## Создание видов Как мы упоминали ранее, вид - это просто PHP скрипт, состоящий из PHP и HTML кодa. В примере ниже - вид, который представляет форму авторизации. Как видите, PHP код здесь генерирует динамический контент, как, например, заголовок страницы и саму форму, тогда как HTML организует полученные данные в готовую html страницу. @@ -41,7 +41,7 @@ $this->title = 'Вход'; > Совет: Переданные переменные могут быть перечислены в блоке комментария в начале скрипта, чтобы их смогли распознать IDE. К тому же, это хороший способ добавления документации в вид. -### Безопасность +### Безопасность При создании видов, которые генерируют HTML страницы, важно кодировать и/или фильтровать данные, которые приходят от пользователей перед тем как их показывать. В противном случае ваше приложение может стать жертвой атаки типа [межсайтовый скриптинг](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3) @@ -72,7 +72,7 @@ use yii\helpers\HtmlPurifier; > Совет: Несмотря на то, что HTMLPurifier отлично справляется с тем, чтобы сделать вывод безопасным, работает он довольно медленно. Если от приложения требуется высокая производительность, рассмотрите возможность [кэширования](caching-overview.md) отфитрованного результата -### Организация видов +### Организация видов Как и для [контроллеров](structure-controllers.md), и [моделей](structure-models.md), для видов тоже есть определенные соглашения в их организации. @@ -83,7 +83,7 @@ use yii\helpers\HtmlPurifier; В контроллерах и виджетах вы можете изменить папки видов по умолчанию, переопределив метод [[yii\base\ViewContextInterface::getViewPath()]]. -## Рендеринг видов +## Рендеринг видов Вы можете рендерить виды в [контроллерах](structure-controllers.md), [widgets](structure-widgets.md), или из любого другого места, вызывая методы рендеринга видов. Методы вызываются приблизительно так, как это показано в примере ниже, @@ -97,7 +97,7 @@ methodName($view, $params = []) ``` -### Рендеринг в контроллерах +### Рендеринг в контроллерах Внутри [контроллеров](structure-controllers.md) можно вызывать следующие методы рендеринга видов: @@ -137,7 +137,7 @@ class PostController extends Controller ``` -### Рендеринг в виджетах +### Рендеринг в виджетах Внутри [виджетов](structure-widgets.md), вы можете вызывать следующие методы для рендеринга видов. * [[yii\base\Widget::render()|render()]]: рендерит [именованный вид](#named-views). @@ -167,7 +167,7 @@ class ListWidget extends Widget ``` -### Рендеринг в видах +### Рендеринг в видах Вы можете рендерить вид внутри другого вида используя методы, которые предоставляет [[yii\base\View|компонент вида]]: @@ -183,7 +183,7 @@ class ListWidget extends Widget ``` -### Рендеринг в других местах +### Рендеринг в других местах Вы может получить доступ к [[yii\base\View|виду]] как компоненту приложения вот так: `Yii::$app->view`, а затем вызвать вышеупомянутые методы, чтобы отрендерить вид. Например, @@ -194,7 +194,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); ``` -### Именованные виды +### Именованные виды При рендеринге вида, вы можете указать нужный вид, используя как имя вида, так и путь к файлу/алиас. В большинстве случаев вы будете использовать первый вариант, т.к. он более нагляден и гибок. Мы называем виды, которые были вызваны с помощью сокращенного имени *именованные виды*. @@ -212,7 +212,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); В соответствии с вышесказанным, вызов `$this->render('view')` в контроллере `app\controllers\PostController` будет рендерить файл `@app/views/post/view.php`, а вызов `$this->render('_overview')` в этом виде будет рендерить файл `@app/views/post/_overview.php`. -### Доступ к данным из видов +### Доступ к данным из видов Данные можно передавать в вид явно или подгружать их динамически, обращаясь к контексту из вида. @@ -237,7 +237,7 @@ ID контроллера: context->id ?> Явная передача данных в вид обычно более предпочтительна, т.к. она делает виды независимыми от контекста. Однако, у нее есть недостаток - необходимость каждый раз вручную строить массив данных, что может быть довольно утомительно и привести к ошибкам, если вид рендерится в разных местах. -### Передача данных между видами +### Передача данных между видами [[yii\base\View|Компонент вида]] имеет свойство [[yii\base\View::params|params]], которое вы можете использовать для обмена данными между видами. @@ -256,11 +256,11 @@ $this->params['breadcrumbs'][] = 'О нас'; ``` -## Шаблоны +## Шаблоны Шаблоны - особый тип видов, которые представляют собой общие части разных видов. Например, у большинства страниц веб приложений одинаковые верх и низ (хедер и футер). Можно, конечно, указать их и в каждом виде, однако лучше сделать это один раз, в шаблоне, и затем, при рендеринге, включать уже отрендеренный вид в заданное место шаблона. -### Создание шаблонов +### Создание шаблонов Поскольку шаблоны это виды, их можно создавать точно так же, как и обычные виды. По умолчанию шаблоны хранятся в папке `@app/views/layouts`. Шаблоны, которые используются в конкретном [модуле](structure-modules.md), хранятся в подпапке `views/layouts` [[yii\base\Module::basePath|папки модуля]]. Вы можете изменить папку шаблонов по умолчанию, используя свойство [[yii\base\Module::layoutPath]] приложения или модулей. @@ -309,7 +309,7 @@ use yii\helpers\Html; Он вызывает событие [[yii\web\View::EVENT_END_BODY|EVENT_END_BODY]] и генерирует метку, которая будет заменена зарегистрированным HTML кодом (например, Javascript'ом), который нужно разместить в конце `` страницы. -### Доступ к данным в шаблонах +### Доступ к данным в шаблонах Внутри шаблона, у вас есть доступ к двум предопределенным переменным: `$this` и `$content`. Первая представляет собой [[yii\base\View|вид]] компонент, как и в обычных видах, тогда как последняя содержит результат рендеринга вида, который рендерится при вызове метода [[yii\base\Controller::render()|render()]] в контроллерах. @@ -318,7 +318,7 @@ use yii\helpers\Html; передать данные из вида шаблону, вы можете использовать метод, описанный в [передаче данных между видами](#sharing-data-among-views). -### Использование шаблонов +### Использование шаблонов Как было описано в секции [Рендеринг в контроллерах](#rendering-in-controllers), когда вы рендерите вид, вызывая метод [[yii\base\Controller::render()|render()]] из контроллера, к результату рендеринга будет применен шаблон. По умолчанию будет использован шаблон `@app/views/layouts/main.php` . @@ -363,7 +363,7 @@ Yii определяет какой шаблон использовать для Если у значения `layout` нет расширения, будет использовано расширение по умолчанию - `.php`. -### Вложенные шаблоны +### Вложенные шаблоны Иногда нужно вложить один шаблон в другой. Например, в разных разделах сайта используются разные шаблоны, но у всех этих шаблонов есть основная разметка, которая определяет HTML5 структуру страницы. Вы можете использовать вложенные шаблоны, @@ -385,7 +385,7 @@ Yii определяет какой шаблон использовать для Используя подход выше, вы можете вкладывать шаблоны друг в друга в несколько уровней. -### Использование блоков +### Использование блоков Блоки позволяют "записывать" контент в одном месте, а показывать в другом. Они часто используются совместно с шаблонами. Например, вы определяете (записываете) блок в виде и отображаете его в шаблоне. @@ -445,7 +445,7 @@ Yii определяет какой шаблон использовать для ``` -## Использование компонентов вида +## Использование компонентов вида [[yii\base\View|Компоненты вида]] дают много возможностей. Несмотря на то, что существует возможность создавать индивидуальные экземпляры [[yii\base\View]] или дочерних классов, в большинстве случаев используется сам компонент `view` приложения. Вы можете сконфигурировать компонент в [конфигурации приложения](structure-applications.md#application-configurations) таким образом: @@ -475,7 +475,7 @@ Yii определяет какой шаблон использовать для Также удобно пользоваться мелкими, но удобными фичами при разработке веб страниц, которые приведены ниже. -### Установка заголовков страниц +### Установка заголовков страниц У каждой страницы должен быть заголовок. Обычно заголовок выводится в [шаблоне](#layouts). Однако на практике заголовок часто определяется в видах, а не в шаблонах. Чтобы передать заголовок из вида в шаблон, используется свойство [[yii\web\View::title|title]]. @@ -495,7 +495,7 @@ $this->title = 'Мой заголовок страницы'; ``` -### Регистрация мета-тэгов +### Регистрация мета-тэгов На веб страницах обычно есть мета-тэги, которые часто используются различными сервисами. Как и заголовки страниц, мета-тэги выводятся в `` и обычно генерируются в шаблонах. @@ -530,7 +530,7 @@ $this->registerMetaTag(['name' => 'description', 'content' => 'Это сайт ``` -### Регистрация тэгов link +### Регистрация тэгов link Как и [мета тэги](#adding-meta-tags), link тэги полезны во многих случаях, как, например, задание уникальной favicon, указание на RSS фид или указание OpenID сервера для авторизации. С link тэгами можно работать аналогично работе с мета тэгами, вызывая метод [[yii\web\View::registerLinkTag()]]. Например, вы можете зарегистрировать link тэг в виде таким образом: @@ -554,7 +554,7 @@ $this->registerLinkTag([ [[yii\web\View::registerLinkTag()|registerLinkTag()]] чтобы избежать дублирования link тэгов одного типа. -## События в видах +## События в видах [[yii\base\View|Компонент вида]] вызывает несколько событий во время рендеринга. Вы можете задавать обработчики для этих событий чтобы добавлять контент @@ -579,7 +579,7 @@ $this->registerLinkTag([ ``` -## Рендеринг статических страниц +## Рендеринг статических страниц Статическими страницами мы считаем страницы, которые содержат в основном статические данные и для формирования которых не нужно строить динамические данные в контроллерах. @@ -624,7 +624,7 @@ http://localhost/index.php?r=site/page&view=about Вы можете сконфирурировать параметр [[yii\web\ViewAction::viewPrefix]] чтобы изменить папку в которой ищется вид. -## Полезные советы +## Полезные советы Виды отвечают за представление данных моделей в формате, понятным конечным пользователям. В целом, виды diff --git a/docs/guide-ru/structure-widgets.md b/docs/guide-ru/structure-widgets.md index 4d251b87392..6fbd769dfa9 100644 --- a/docs/guide-ru/structure-widgets.md +++ b/docs/guide-ru/structure-widgets.md @@ -20,7 +20,7 @@ use yii\bootstrap\DatePicker; конкретного виджета, следует обратиться к документации соответствующего класса. -## Использование Виджетов +## Использование Виджетов Главным образом, виджеты применяют в [представлениях](structure-views.md). Для того, чтобы использовать виджет в представлении, достаточно вызвать метод [[yii\base\Widget::widget()]]. Метод принимает массив [настроек](concept-configurations.md) @@ -72,7 +72,7 @@ use yii\helpers\Html; использован в дальнейшем для формирования его внутреннего содержимого. -## Создание Виджетов +## Создание Виджетов Для того, чтобы создать виджет, следует унаследовать класс [[yii\base\Widget]] и переопределить методы [[yii\base\Widget::init()]] и/или [[yii\base\Widget::run()]]. Как правило, метод `init()` должен содержать @@ -181,7 +181,7 @@ public function run() следует переопределить метод [[yii\base\Widget::getViewPath()]]. -## Лучшие Практики +## Лучшие Практики Виджеты представляют собой объектно-ориентированный подход к повторному использованию кода пользовательского интерфейса. diff --git a/docs/guide-ru/tutorial-core-validators.md b/docs/guide-ru/tutorial-core-validators.md index 5a24f5c30fb..7cec18c70cf 100644 --- a/docs/guide-ru/tutorial-core-validators.md +++ b/docs/guide-ru/tutorial-core-validators.md @@ -19,7 +19,7 @@ public function rules() Ниже мы опишем основные способы использования и свойства всех встроенных валидаторов. -## [[yii\validators\BooleanValidator|boolean]] +## [[yii\validators\BooleanValidator|boolean]] ```php [ @@ -41,7 +41,7 @@ public function rules() оставить свойство [[yii\validators\BooleanValidator::strict|strict]] равным false. -## [[yii\captcha\CaptchaValidator|captcha]] +## [[yii\captcha\CaptchaValidator|captcha]] ```php [ @@ -59,7 +59,7 @@ public function rules() что означает, что *input* обязателен. -## [[yii\validators\CompareValidator|compare]] +## [[yii\validators\CompareValidator|compare]] ```php [ @@ -92,7 +92,7 @@ public function rules() * `<=`: проверяет, что валидируемое значение меньше или равно тому, с которым происходит сравнение. -## [[yii\validators\DateValidator|date]] +## [[yii\validators\DateValidator|date]] ```php [ @@ -110,7 +110,7 @@ public function rules() из строки даты/времени. -## [[yii\validators\DefaultValueValidator|default]] +## [[yii\validators\DefaultValueValidator|default]] ```php [ @@ -144,7 +144,7 @@ function foo($model, $attribute) { в секции [Пустые значения](input-validation.md#handling-empty-inputs). -## [[yii\validators\NumberValidator|double]] +## [[yii\validators\NumberValidator|double]] ```php [ @@ -160,7 +160,7 @@ function foo($model, $attribute) { - `min`: Нижний лимит (включительно) для значений. Если не установлен, валидатор не будет проверять нижний лимит. -## [[yii\validators\EmailValidator|email]] +## [[yii\validators\EmailValidator|email]] ```php [ @@ -178,7 +178,7 @@ function foo($model, $attribute) { IDN-валидации вам нужно установить и включить PHP расширение `intl`, иначе будет выброшено исключение. -## [[yii\validators\ExistValidator|exist]] +## [[yii\validators\ExistValidator|exist]] ```php [ @@ -222,7 +222,7 @@ function foo($model, $attribute) { их в `targetAttribute` как массив. -## [[yii\validators\FileValidator|file]] +## [[yii\validators\FileValidator|file]] ```php [ @@ -255,7 +255,7 @@ function foo($model, $attribute) { [Загрузка файлов](input-file-upload.md) для более полного понимания загрузки и проверки файлов. -## [[yii\validators\FilterValidator|filter]] +## [[yii\validators\FilterValidator|filter]] ```php [ @@ -282,7 +282,7 @@ function foo($model, $attribute) { > Трюк: Если вы хотите удалить пробелы вокруг значений атрибута, вы можете использовать валидатор [trim](#trim). -## [[yii\validators\ImageValidator|image]] +## [[yii\validators\ImageValidator|image]] ```php [ @@ -304,7 +304,7 @@ function foo($model, $attribute) { - `maxHeight`: максимальная высота изображения. По умолчанию null, что значит, что нет верхнего лимита. -## [[yii\validators\RangeValidator|in]] +## [[yii\validators\RangeValidator|in]] ```php [ @@ -325,7 +325,7 @@ function foo($model, $attribute) { `range`. -## [[yii\validators\NumberValidator|integer]] +## [[yii\validators\NumberValidator|integer]] ```php [ @@ -340,7 +340,7 @@ function foo($model, $attribute) { - `min`: нижний лимит (включительно) для числа. Если не установлено, валидатор не будет проверять нижний лимит. -## [[yii\validators\RegularExpressionValidator|match]] +## [[yii\validators\RegularExpressionValidator|match]] ```php [ @@ -359,7 +359,7 @@ function foo($model, $attribute) { только если входящее значение НЕ совпадает с шаблоном. -## [[yii\validators\NumberValidator|number]] +## [[yii\validators\NumberValidator|number]] ```php [ @@ -374,7 +374,7 @@ function foo($model, $attribute) { - `min`: нижний лимит (включительно) для числа. Если не установлено, валидатор не будет проверять нижний лимит. -## [[yii\validators\RequiredValidator|required]] +## [[yii\validators\RequiredValidator|required]] ```php [ @@ -398,7 +398,7 @@ function foo($model, $attribute) { в секции [Пустые значения](input-validation.md#handling-empty-inputs). -## [[yii\validators\SafeValidator|safe]] +## [[yii\validators\SafeValidator|safe]] ```php [ @@ -411,7 +411,7 @@ function foo($model, $attribute) { [безопасным атрибутом](structure-models.md#safe-attributes). -## [[yii\validators\StringValidator|string]] +## [[yii\validators\StringValidator|string]] ```php [ @@ -434,7 +434,7 @@ function foo($model, $attribute) { [[yii\base\Application::charset|charset]], которое по умолчанию установлено в `UTF-8`. -## [[yii\validators\FilterValidator|trim]] +## [[yii\validators\FilterValidator|trim]] ```php [ @@ -447,7 +447,7 @@ function foo($model, $attribute) { Помните, что если входящие данные являются массивом, то они будут проигнорированы этим валидатором. -## [[yii\validators\UniqueValidator|unique]] +## [[yii\validators\UniqueValidator|unique]] ```php [ @@ -490,7 +490,7 @@ function foo($model, $attribute) { где `$query` это объект [[yii\db\Query|Query]], который вы можете изменить в функции. -## [[yii\validators\UrlValidator|url]] +## [[yii\validators\UrlValidator|url]] ```php [ diff --git a/docs/guide-ru/tutorial-i18n.md b/docs/guide-ru/tutorial-i18n.md index 477af63f1fa..a44de9e78e4 100644 --- a/docs/guide-ru/tutorial-i18n.md +++ b/docs/guide-ru/tutorial-i18n.md @@ -512,7 +512,7 @@ class TranslationEventHandler См. описание [форматирования дат](output-formatter.md). -Настройка PHP-окружения +Настройка PHP-окружения -------------------------------------------------------- Для работы с большей частью функций интернационализации, Yii использует [PHP-расширение intl](http://php.net/manual/en/book.intl.php). diff --git a/docs/guide-ru/tutorial-yii-integration.md b/docs/guide-ru/tutorial-yii-integration.md index 0ce3d18933a..7e51d993734 100644 --- a/docs/guide-ru/tutorial-yii-integration.md +++ b/docs/guide-ru/tutorial-yii-integration.md @@ -4,12 +4,12 @@ Иногда необходимо использовать сторонний код в приложениях Yii. Или же есть потребность использовать Yii в качестве библиотеки в сторонних системах. В этом разделе мы рассмотрим, как это происходит. -Использование сторонних библиотек в Yii +Использование сторонних библиотек в Yii ---------------------------------- Перед тем, как использовать стороннюю библиотеку в приложении Yii, в первую очередь следует убедиться, что в ней либо явно настроена загрузка классов, либо классы могут загружаться автоматически. -### Использование пакетов Composer +### Использование пакетов Composer Многие сторонние библиотеки поставляются в виде пакетов [Composer](https://getcomposer.org/). Для установки таких библиотек достаточно проделать два простых шага: @@ -27,7 +27,7 @@ require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` -### Использование отдельных библиотек +### Использование отдельных библиотек Если библиотека не поставляется в виде пакета Composer, необходимо установить ее согласно ее руководству по установке. В большинстве случаев потребуется вручную скачать файл с релизом и распаковать его в директорию `BasePath/vendor`, где `BasePath` соответствует [базовому пути](structure-applications.md#basePath) приложения. @@ -56,7 +56,7 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php'; ``` -Использование Yii в сторонних системах +Использование Yii в сторонних системах -------------------------------- Поскольку в Yii реализована масса полезных функций, они могут пригодиться при разработке или расширении сторонних систем, таких как WordPress и Joomla, или приложений, разработанных с помощью других PHP-фреймворков. Например, в сторонней системе можно задействовать класс [[yii\helpers\ArrayHelper]] или использовать функционал [Active Record](db-active-record.md). Для этого обычно нужно сделать две вещи: установить Yii и подключить Yii. @@ -88,7 +88,7 @@ new yii\web\Application($yiiConfig); // НЕ ВЫЗЫВАЙТЕ run() в это Это позволит задействовать большинство функционала, который предоставляет Yii. Например, можно будет создавать классы типа Active Record, и с их помощью взаимодействовать с базой данных. -Использование Yii 2 в связке с Yii 1 +Использование Yii 2 в связке с Yii 1 ---------------------- Если в прошлом вам приходилось использовать Yii 1, не исключено, что у вас до сих пор где-то используются приложения на этой платформе. Вместо того, чтобы переписывать все приложение под Yii 2, может быть целесообразно расширить его используя отдельные функции, которые появились в Yii 2. diff --git a/docs/guide-uk/caching-fragment.md b/docs/guide-uk/caching-fragment.md index 268e9fc7a9e..da566675f54 100644 --- a/docs/guide-uk/caching-fragment.md +++ b/docs/guide-uk/caching-fragment.md @@ -26,14 +26,14 @@ if ($this->beginCache($id)) { для визначення кешувального фрагмента. -## Параметри кешування +## Параметри кешування Ви можете вказати додаткові параметри про кешуванні фрагментів, передавши масив опцій в якості другого параметра метода [[yii\base\View::beginCache()|beginCache()]]. За лаштунками, цей масив параметрів буде використано для налаштування віджета [[yii\widgets\FragmentCache]], який реалізує фактичну функціональність кешування фрагментів. -### Тривалість +### Тривалість Мабуть найбільш часто використовуваною опцією кешування фрагмента є [[yii\widgets\FragmentCache::duration|duration]]. Вона визначає на скільки секунд зміст може залишатися дійсним у кеші. Код нижче кешує фрагмент не більше, ніж на одну: @@ -50,7 +50,7 @@ if ($this->beginCache($id, ['duration' => 3600])) { Якщо опцію тривалості не задано, то вона прийме значенне за замовчування (60), що означає, що вміст в кеші стане недійсним через 60 секунд. -### Залежності +### Залежності Подібно до [кешування даних](caching-data.md#cache-dependencies), фрагмент вмісту у кеші також може мати залежності. Наприклад, вміст поста, що відображається, залежить від того, чи був він змінений. @@ -74,7 +74,7 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ``` -### Варіації +### Варіації Вміст, що кешується, може бути змінено відповідно до деяких параметрів. Наприклад, для веб-додатка із підтримкою декількох мов, один і той же шматок представлення коду може генерувати контент на різних мовах. @@ -94,7 +94,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ``` -### Перемикання кешування +### Перемикання кешування Іноді, ви можете захотіти увімкнути кешування фрагмента тільки за певних умов. Наприклад, для сторінки, яка відображає форму, ви хочете кешувати тільки форму при її початковому запиті (через GET-запит). Будь-яке подальше відображення (через POST-запит) @@ -111,7 +111,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## Вкладене кешування +## Вкладене кешування Кешування фрагментів може бути вкладеним. Тобто, кешований фрагмент може бути укладений в інший фрагмент, що також кешується. Наприклад, коментарі кешируются у внутрішньому фрагменті кешу, і вони ж кешуються разом із вмістом поста у зовнішньому @@ -142,7 +142,7 @@ if ($this->beginCache($id1)) { в іншому випадку застарілі внутрішні фрагменти можуть зберігатися в зовнішньому фрагменті. -## Динамічний зміст +## Динамічний зміст При використанні кешування фрагментів, ви можете зіткнутися із ситуацією, коли великий фрагмент змісту є відносно статичним, за винятком одного або декількох місць. Наприклад, заголовок сторінки може відображатися у головному меню разом diff --git a/docs/guide-uk/concept-aliases.md b/docs/guide-uk/concept-aliases.md index fd8a5e4e311..75d324a79ed 100644 --- a/docs/guide-uk/concept-aliases.md +++ b/docs/guide-uk/concept-aliases.md @@ -7,7 +7,7 @@ Yii framework, а `@web` можна використовувати для отримання базового URL поточного додатку. -Створення псевдонімів +Створення псевдонімів --------------------- Для створення псевдоніма шляху до файлу або URL використовується метод [[Yii::setAlias()]]: @@ -49,7 +49,7 @@ return [ ``` -Перетворення псевдонімів +Перетворення псевдонімів ------------------------ Виклик [[Yii::getAlias()]] перетворює кореневий псевдонім в шлях до файлу або URL, який цей псевдонім представляє. @@ -79,7 +79,7 @@ Yii::getAlias('@foo/bar/file.php'); // виведе: /path2/bar/file.php Якби `@foo/bar` не був оголошений кореневим псевдонімом, остання строка вивела б `/path/to/foo/bar/file.php`. -Використання псевдонімів +Використання псевдонімів ------------------------ Псевдоніми розпізнаються в багатьох частинах Yii без необхідності попереднього виклику [[Yii::getAlias()]] @@ -97,7 +97,7 @@ $cache = new FileCache([ Для того, щоб дізнатися чи підтримує метод або властивість псевдоніми, зверніться до документації API. -Заздалегідь визначені псевдоніми +Заздалегідь визначені псевдоніми -------------------------------- В Yii заздалегідь визначені псевдоніми для часто використовуваних шляхів до файлів і URL: @@ -115,7 +115,7 @@ $cache = new FileCache([ Решта псевдонімів задаються в конструкторі додатка в момент застосування [конфигурації](concept-configurations.md). -Псевдоніми розширень +Псевдоніми розширень -------------------- Для кожного [розширення](structure-extensions.md), що встановлюється через Composer, автоматично задається псевдонім. diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 9ffc5f79481..44ed3d64e36 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -11,7 +11,7 @@ Тим не менш, все описане також стосується до інтерфейсів і трейтів. -Використання автозавантажувача Yii +Використання автозавантажувача Yii ---------------------------------- Для використання автозавантажувача класів Yii слід дотримуватися два простих правила створення і іменування класів: @@ -38,7 +38,7 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); frontend в простір імен `frontend`, а класи backend в простір імен `backend`. При цьому класи будуть завантажені автоматично. -Мапа класів +Мапа класів ----------- Автозавантажувач Yii підтримує *мапу класів*. Ця можливість дозволяє вказати шлях до файлу для кожного імені класу. @@ -56,7 +56,7 @@ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; в процесі [первинного завантаження](runtime-bootstrapping.md), так як вона повинна бути сформована до використання класів. -Використання інших автозавантажувачів +Використання інших автозавантажувачів ------------------------------------- Оскільки Yii використовує Composer у якості менеджера залежностей, рекомендується додатково встановити його автозавантажувач. @@ -80,7 +80,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); і підключіть його у [вхідному скрипті](structure-entry-scripts.md). -Автозавантаження класів розширень +Автозавантаження класів розширень --------------------------------- Автозавантажувач Yii може автоматично завантажувати класи [розширень](structure-extensions.md), при умові виконання вимоги diff --git a/docs/guide-uk/start-databases.md b/docs/guide-uk/start-databases.md index 7cefe02fed7..31fc88adeb5 100644 --- a/docs/guide-uk/start-databases.md +++ b/docs/guide-uk/start-databases.md @@ -16,7 +16,7 @@ Зокрема, ви повинні знати, як створювати бази даних, як виконувати SQL-запити за допомогою клієнтських додатків баз даних. -Підготовка бази даних +Підготовка бази даних --------------------- Для початку, створіть базу даних `yii2basic`, з якої і будете надалі отримувати дані. @@ -46,7 +46,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); На даний момент, у вас є база даних `yii2basic` і таблиця `country` з трьома колонками, що містять десять рядків даних. -Налаштування підключення до БД +Налаштування підключення до БД ------------------------------ Перш ніж продовжити, переконайтеся, що у вас налаштовано [PDO](http://www.php.net/manual/en/book.pdo.php) PHP розширення @@ -78,7 +78,7 @@ return [ будь ласка, зверніться до розділу [Налаштування](concept-configurations.md). -Створення Active Record +Створення Active Record ----------------------- Для відображення і отримання даних з таблиці `country` створіть [Active Record](db-active-record.md) клас @@ -126,7 +126,7 @@ $country->save(); взаємодіяти з базою даних, використовуючи для доступу метод передачі даних нижнього рівня під назвою [Data Access Objects](db-dao.md). -Створення дії +Створення дії ------------- Щоб відобразити дані про країну кінцевим користувачам, необхідно створити нову дію. Замість розміщення нової дії @@ -180,7 +180,7 @@ class CountryController extends Controller Наприкінці, дія `index` повертає представлення `index` і передає дані по країнах, з розбивкою на сторінки. -Створення представлення +Створення представлення ----------------------- В директорії `views` створіть спочатку підкаталог `country`. Цей каталог буде використовуватись для всіх представленнь @@ -210,7 +210,7 @@ use yii\widgets\LinkPager; При натисканні на будь-якій з них будуть оновлюватись дані країн на відповідній сторінці. -Спробуєм +Спробуєм -------- Щоб побачити все, що було створено під час роботи, відкрийте в браузері наступний URL: @@ -241,7 +241,7 @@ http://hostname/index.php?r=country/index&page=2 Таким чином, новий запит буде мати визначення `LIMIT 5 OFFSET 5` і поверне наступні пʼять країн для відображення. -Підсумок +Підсумок -------- В цьому розділі ви дізналися, як працювати з базою даних. Ви також дізналися, як вибирати і відображати дані на сторінках diff --git a/docs/guide-uk/start-forms.md b/docs/guide-uk/start-forms.md index 65ea79c2f07..49f7a04197b 100644 --- a/docs/guide-uk/start-forms.md +++ b/docs/guide-uk/start-forms.md @@ -14,7 +14,7 @@ * Як створити HTML форму в [представленні](structure-views.md) -Створення моделі +Створення моделі ---------------- Створіть клас моделі `EntryForm` та збережіть у файлі `models/EntryForm.php` як показано нижче. Він буде використовуватись @@ -74,7 +74,7 @@ if ($model->validate()) { ``` -Створення дії +Створення дії ------------- Далі створіть дію `entry` в контролері `site`, точно так, як ви робили це раніше. @@ -127,7 +127,7 @@ class SiteController extends Controller для уникнення [проблеми повторного відправлення даних форми](http://en.wikipedia.org/wiki/Post/Redirect/Get). -Створення представлення +Створення представлення ----------------------- На завершення, створюємо два представлення з іменами `entry-confirm` і `entry`, котрі зображаються дією `entry` з минулого підрозділу. @@ -172,7 +172,7 @@ use yii\widgets\ActiveForm; Далі для генерації кнопки відправлення даних викликається метод [[yii\helpers\Html::submitButton()]]. -Спробуємо +Спробуємо --------- Щоб побачити, як це працює, відкрийте в браузері наступний URL: @@ -192,7 +192,7 @@ http://hostname/index.php?r=site/entry ![Підтвердження введених даних](images/start-entry-confirmation.png) -### Як працює вся ця "магія" +### Як працює вся ця "магія" Ви, більш за все, ставите питанням про те, як все ж ця HTML форма працює насправді і яким чином. Весь процес може здатися трохи магічним: те як зображаються підписи до полів, помилки перевірки даних при некоректному @@ -219,7 +219,7 @@ http://hostname/index.php?r=site/entry Як ви дізнаєтесь пізніше, розробляти нові віджети доволі просто. Багато із представленнь можна винести у віджети, щоб використовувати їх повторно в інших частинах і тим самим спростити розробку в майбутньому. -Підсумок +Підсумок -------- В даному розділі ви випробували кожну частину шаблона проектування MVC. Ви дізналися як створювати класи моделей diff --git a/docs/guide-uk/start-gii.md b/docs/guide-uk/start-gii.md index eda83a2babc..d8ca7d8261b 100644 --- a/docs/guide-uk/start-gii.md +++ b/docs/guide-uk/start-gii.md @@ -13,7 +13,7 @@ * Налаштування коду, що був згенерований Gii -Підготовка Gii +Підготовка Gii -------------- [Gii](tool-gii.md) надається як [модуль](structure-modules.md). Ви можете підключити модуль Gii, налаштувавши відповідну @@ -59,7 +59,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -Генерація класу Active Record +Генерація класу Active Record ----------------------------- Використовуючи Gii для генерації класу Active Record, виберіть "Model Generator" (натиснувши на посилання на сторінці Gii). @@ -85,7 +85,7 @@ http://hostname/index.php?r=gii файл, то побачите повідомлення про те, що він був переписаний і замінений на щойно згенерований код. -Генерація коду CRUD +Генерація коду CRUD ------------------- CRUD розшифровується як Створити, Прочитати, Оновити, і Видалити, це операції що вирішують чотири спільні завдання @@ -108,7 +108,7 @@ CRUD розшифровується як Створити, Прочитати, (Попередні версії файлів на мають повного CRUD функціоналу.) -Спробуємо +Спробуємо --------- Щоб побачити все, що було створено під час роботи, відкрийте в браузері наступний URL: @@ -139,7 +139,7 @@ http://hostname/index.php?r=country/index вам значно прискорити розробку ваших додатків. Для більш докладної інформації, будьласка, зверніться до розділу [Gii](tool-gii.md). -Підсумок +Підсумок -------- В цьому розділі ви дізналися як, використовуючи Gii, генерувати код, який реалізує повну функціональність CRUD для diff --git a/docs/guide-uk/start-hello.md b/docs/guide-uk/start-hello.md index 17a0f854f36..df0bf8f5313 100644 --- a/docs/guide-uk/start-hello.md +++ b/docs/guide-uk/start-hello.md @@ -14,7 +14,7 @@ 3. Як додаток відправляє запити до [дії](structure-controllers.md). -Створення дії +Створення дії ------------- Для нашої задачі знадобиться [дія](structure-controllers.md#creating-actions) `say`, котра читає параметр `message` із @@ -67,7 +67,7 @@ Yii використовує префікс `action` для того, щоб в Результат відображення з допомогою `return` передається додатку, котрий віддає його користувачу. -Створення представлення +Створення представлення ----------------------- [Представлення](structure-views.md) є скриптами, які використовуються для формування тіла відповіді. Для нашого @@ -93,7 +93,7 @@ use yii\helpers\Html; скриптом представлення, буде передано додатком користувачу. -Спробуємо +Спробуємо --------- Після створення дії і представлення, ви можете перейти на нову сторінку по наступному URL: @@ -127,7 +127,7 @@ http://hostname/index.php?r=site/say&message=Привіт+світ імені класа контролера `PostCommentController`. -Підсумок +Підсумок -------- В даному розділі ви торкнулися теми контролерів і представлень в паттерні MVC. Ви створили дію, як частину контролера, diff --git a/docs/guide-uk/start-installation.md b/docs/guide-uk/start-installation.md index 14d5eb05e07..2584cab9910 100644 --- a/docs/guide-uk/start-installation.md +++ b/docs/guide-uk/start-installation.md @@ -8,7 +8,7 @@ > Примітка: На відміну від Yii 1, після стандартного встановлення Yii 2 ми отримуємо як фреймворк, так і шаблон додатка. -Встановлення за допомогою Composer +Встановлення за допомогою Composer ---------------------------------- Якщо у вас все ще не вставновлено Composer, то це можна зробити за допомогою інструкції на [getcomposer.org](https://getcomposer.org/download/). @@ -48,7 +48,7 @@ > виконання робочого коду. -Встановлення з архіву +Встановлення з архіву --------------------- Встановлення Yii з архіву складається з трьох кроків: @@ -64,7 +64,7 @@ ``` -Інші параметри встановлення +Інші параметри встановлення --------------------------- Вище наведені інструкції по встановленню Yii, які також створюють базовий веб-додаток, готового до роботи. @@ -78,7 +78,7 @@ [разширений шаблон додатка](tutorial-advanced-app.md). -Перевірка встановлення +Перевірка встановлення ---------------------- Після встановлення, ви можете перевірити за допомогою браузера свій встановлений додаток Yii за наступним URL: @@ -109,7 +109,7 @@ http://localhost/basic/web/index.php (наприклад, `pdo_mysql` для MySQL). -Налаштування веб серверів +Налаштування веб серверів ------------------------- > Інформація: можете пропустити даний підрозділ, якщо ви тільки розпочали знайомитися з фреймворком @@ -132,7 +132,7 @@ Yii 2.0 також сумісний із віртуальною машиною [ додатка для покращення безпеки, як описано в розділі [Робота на shared хостингу](tutorial-shared-hosting.md). -### Рекомендовані налаштування Apache +### Рекомендовані налаштування Apache Додайте наступний код до файлу конфігурации Apache `httpd.conf` або в конфігураційний файл віртуального хоста. Не забудьте замінити `path/to/basic/web` на коректний шлях до `basic/web`. @@ -155,7 +155,7 @@ DocumentRoot "path/to/basic/web" ``` -### Рекомендовані налаштування Nginx +### Рекомендовані налаштування Nginx Для використання [Nginx](http://wiki.nginx.org/) вам потрібно встановити PHP як [FPM SAPI](http://php.net/install.fpm). Використовуйте наступні параметри Nginx, замінивши `path/to/basic/web` на коректний шлях до `basic/web`, diff --git a/docs/guide-uk/start-workflow.md b/docs/guide-uk/start-workflow.md index 99abce46152..7eb5a9f1300 100644 --- a/docs/guide-uk/start-workflow.md +++ b/docs/guide-uk/start-workflow.md @@ -10,7 +10,7 @@ `http://hostname/index.php` ви отримаєте доступ до додатку. Відрегулюйте URL-адреси для ваших потреб. -Функціонал +Функціонал ---------- Вбудований шаблон простого додатку складається з чотирьох сторінок: @@ -29,7 +29,7 @@ [вбудований відладчик](tool-debugger.md), він записує і відображає інформацію про хід виконання додатку. -Структура додатка Yii +Структура додатка Yii --------------------- Нижче наведений перелік основних директорій і файлів вашого додатку (вважаємо, що додаток встановлений в директорію `basic`): @@ -69,7 +69,7 @@ basic/ кореневий каталог додатка [Віджети](structure-widgets.md) використовуються у [представленнях](structure-views.md) для побудови динамічних інтерфейсів сайта. -Життєвий цикл запиту +Життєвий цикл запиту -------------------- На діаграмі показано, як додаток відпрацьовує запит. diff --git a/docs/guide-uk/structure-application-components.md b/docs/guide-uk/structure-application-components.md index 775844ed84c..f877ffecac9 100644 --- a/docs/guide-uk/structure-application-components.md +++ b/docs/guide-uk/structure-application-components.md @@ -51,7 +51,7 @@ У більшості випадків ви можете просто створити локальний компонент і використовувати його при необхідності. -## Попереднє завантаження компонентів +## Попереднє завантаження компонентів Як згадувалося вище, компонент додатка буде створено при першому звертанні. Якщо до нього не буде зроблено звертань під час запиту - його взагалі не буде створено. @@ -74,7 +74,7 @@ ``` -## Вбудовані компоненти додатку +## Вбудовані компоненти додатку В Yii є декілька *вбудованих* компонентів додатку із фіксованими ID та конфігураціями за замовчуванням. Наприклад, компонент [[yii\web\Application::request|request]] використовується для збору інформації про запит diff --git a/docs/guide-uk/structure-applications.md b/docs/guide-uk/structure-applications.md index c8cfdfb7ce1..2521eec5033 100644 --- a/docs/guide-uk/structure-applications.md +++ b/docs/guide-uk/structure-applications.md @@ -12,7 +12,7 @@ Як можна здогадатися із назв, перший тип, в основному, займається обробкою веб запитів, а другий - консольними командами. -## Конфігурації додатка +## Конфігурації додатка Коли [вхідний скрипт](structure-entry-scripts.md) створює додаток, він завантажить [конфігурацію](concept-configurations.md) та застосує її до додатка, наприклад: @@ -33,7 +33,7 @@ $config = require(__DIR__ . '/../config/web.php'); [конфігураційних файлів](concept-configurations.md#configuration-files), наприклад, файл `web.php` у наведеному вище прикладі. -## Властивості додатка +## Властивості додатка Існує багато важливих властивостей додатка, які ви налаштовуєте в конфігураціях додатка. Ці властивості, зазвичай, описують середовище, у якому працює додаток. Наприклад, @@ -41,20 +41,20 @@ $config = require(__DIR__ . '/../config/web.php'); де зберігати тимчасові файли, і т.п. Нижче ми розглянемо дані властивості. -### Об’язкові властивості +### Об’язкові властивості В кожному додатку, ви маєте налаштувати мінімум дві властивості: [[yii\base\Application::id|id]] та [[yii\base\Application::basePath|basePath]]. -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] Властивість [[yii\base\Application::id|id]] є унікальним ID додатка, який відрізняє його від решти інших додатків. Здебільшого, це використовується всередені системи. Хоч і не є обов’язковим, але для кращої сумістності рекомендується використовувати буквено-цифрові символи при налаштуванні ID додатка. -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] Властивість [[yii\base\Application::basePath|basePath]] вказує на кореневу директорію додатка. Ця директорія, яка містить весь код прикладної системи додатка. В цій директорії, зазвичай, можуть знаходитись підкаталоги `models`, @@ -70,13 +70,13 @@ runtime директорії). Саме з цієї причини, псевдо звертання до runtime директорії). -### Важливі властивості +### Важливі властивості Властивості, перелічені в даному підрозділі, частіш за все повинні бути визначені, тому що вони можуть відрізнятися у різних додатках. -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] Дана властивість дозволяє налаштувати вам безліч [псевдонімів](concept-aliases.md) у рамках масиву. Ключами масива є імена псевдонімів, а значеннами - відповідні значення шляхів. Наприклад, @@ -94,7 +94,7 @@ runtime директорії). Саме з цієї причини, псевдо а не викликаючи метод [[Yii::setAlias()]]. -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] Дана властивість є дуже зручною, вона дозволяє вказувати масив компонентів, котрі мусять бути завантажені у процесі [[yii\base\Application::bootstrap()|початкового завантаження]] додатка. Наприклад, якщо ви хочете, @@ -168,7 +168,7 @@ if (YII_ENV_DEV) { розсудливо використовувати компоненти початкового завантаження. -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] Дана властивість підтримується тільки [[yii\web\Application|веб додатками]]. Вона вказує на [дії контролера](structure-controllers.md), які мусять обробляти всі вхідні запити від користувача. Переважно, @@ -188,7 +188,7 @@ if (YII_ENV_DEV) { ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] Дана властивість є найважливішою. Вона дозволяє вам зареєструвати іменні компоненти у [компонентах додатку](structure-application-components.md), які ви можете використовувати в інших місцях. Наприклад, @@ -216,7 +216,7 @@ if (YII_ENV_DEV) { Більш детальна інформація наведена в розділі [Компоненти додатка](structure-application-components.md). -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] Дана властивість дозволяє вам встановлювати відповідність між ID контролера та його класом. За замовчуванням, Yii встановлює відповідність між ID контролера та його класом згідно [домовленості](#controllerNamespace) @@ -242,7 +242,7 @@ Yii встановлює відповідність між ID контролер [конфігурації](concept-configurations.md). -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] Дана властивість вказує на простір імен за замовчуванням, під яким повинні знаходитись класи контролерів. За замовчуванням, це значення рівне `app\controllers`. Якщо ID контролера є `post`, то, згідно домовленості, @@ -260,7 +260,7 @@ Yii встановлює відповідність між ID контролер [controllerMap](#controllerMap). -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] Дана властивість вказує на мову додатка, на якій додаток повинен відображати зміст кінцевому користувачу. За замовчуванням, значення даної властивості рівне `en`, означаючи англійську мову. @@ -277,7 +277,7 @@ Yii встановлює відповідність між ID контролер Більш детальна інформація наведена у розділі [Інтернаціоналізація](tutorial-i18n.md). -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] Дана властивість визначає [модулі](structure-modules.md), які містить додаток. @@ -302,7 +302,7 @@ Yii встановлює відповідність між ID контролер Більш детальна інформація наведена у розділі [Модулі](structure-modules.md). -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] Дана властивість вказує на ім’я додатка, яке може бути відображене кінцевому користувачу. На відміну від властивості [[yii\base\Application::id|id]], яка має бути унікальною, значення даної властивості потрібне в основному для @@ -311,7 +311,7 @@ Yii встановлює відповідність між ID контролер Якщо ваш код не використовує дану властивість, то ви можете не налаштовувати її. -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] Дана властивість описує масив глобально доступних параметрів додатка. Замість того, щоб використовувати жорстко фіксовані числа і строки у вашому коді, краще оголосити їх параметрами додатка в одному місці і використовувати @@ -336,7 +336,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; конфігураційному файлі додатка, не змінюючи будь-який залежний код. -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] Дана властивість вказує мову, на якій написаний код додатка. За замовчуванням значення рівне `'en-US'`, що означає англійську мову (США). Ви повинні змінити дану властивість, якщо мовою змісту у вашому коді @@ -349,7 +349,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Більш детальна інформація наведена у розділі [Інтернаціоналізація](tutorial-i18n.md). -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] Дана властивість надає альтернативний спосіб встановлення часової зони за замовчуванням у процесі роботи додатка. Таким чином, вказуючи дану властивість, ви, по суті, викликаєте PHP функцію @@ -362,27 +362,27 @@ $width = \Yii::$app->params['thumbnail.size'][0]; ] ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] Дана властивість вказує на версію додатка. За замовчуванням значення рівне `'1.0'`. Ви можете не змінювати дану властивість, якщо ваш код не використовує її. -### Корисні властивості +### Корисні властивості Властивості, які перераховані в даному розділі, не є часто змінюваними, так як їх значення за замовчуванням відповідають загальноприйнятим домовленостям. Однак, ви можете їх налаштувати, якщо вам потрібно використовувати інші значення. -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] Властивість вказує кодування, яке використовує додаток. За замовчуванням значення рівне `'UTF-8'`, яке має бути незмінним для більшості додатків, тільки якщо ви не працюєте із застарілим кодом, який використовує значний об’єм не юнікод даних. -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] Властивість вказує [маршрут](runtime-routing.md), який повинен використовувати додаток, коли його не вказано у вхідному запиті. Маршрут може складатись із ID модуля, ID контролера і/або ID дії. Наприклад, `help`, @@ -398,7 +398,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Таким чином, якщо ви виконаєте команду `yii` без аргументів, вам будет зображена довідкова інформація. -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] Дана властивість описує перелік [розширень](structure-extensions.md), які встановлені і використовуються додатком. За замовчуванням, значенням даної властивості буде масив, отриманий із файла `@vendor/yiisoft/extensions.php`. @@ -433,7 +433,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Розширення також може визначати декілька [псевдонімів](concept-aliases.md). -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] Дана властивість визначає ім’я шаблону за замовчуванням, який мусить бути використаний при формувані [представлення](structure-views.md). Значення за замовчуванням рівне `'main'`, яке означає, що має бути використаний @@ -444,7 +444,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Для відключення використання шаблону, ви можете вказати дану властивість як `false`, однак це є дуже рідкісним випадком. -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] Дана властивість визначає шлях, по якому слід шукати шаблони. Значення за замовчуванням рівне `layouts`, що означає підпапку у [директорії представлень](#viewPath). Якщо значення [директорії представлень](#viewPath) @@ -453,7 +453,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Ви можете налаштувати дану властивість як директорію, так і як [псевдонім шляху](concept-aliases.md). -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] Дана властивість визначає шлях, по якому зберігаються тимчасові файли, такі як: лог файли, кеш файли. За замовчуванням це значення рівне директорії, яка преставлена псевдонімом шляху `@app/runtime`. @@ -465,13 +465,13 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Для спрощення роботи з даною директорією, Yii надає зумовлений псевдонім шляху `@runtime`. -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] Дана властивість визначає базову директорію, де містяться всі файли представлень. Значення за замовчуванням являє собою псевдонім `@app/views`. Ви можете налаштувати дану властивість як директорі або [псевдонім шляху](concept-aliases.md). -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] Дана властивість визначає директорію сторонніх бібліотек, які використовуються і керуються за допомогою [Composer](http://getcomposer.org). Вона містить всі сторонні бібліотеки, які використовуються додатком, @@ -483,13 +483,13 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Для спрощення роботи з даною директорією, Yii надає зумовлений псевдонім шляху `@vendor`. -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] Дана властивість підтримується тільки [[yii\console\Application|консольними додатками]]. Вона вказує чи потрібно використовувати вбудовані в Yii консольні команди. Значення за замовчуванням рівне `true`. -## Події додатка +## Події додатка Додаток викликає декілька подій під час свого життєвого циклу обробки запиту. Ви можете приєднати обробники подій в конфігурації додатка наступним чином: @@ -514,7 +514,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] Дана подія виникає *до* того, як додаток починає обробляти вхідний запит. Справжнє ім’я події - `beforeRequest`. @@ -524,7 +524,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; в залежності від деяких параметрів. -### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] Дана подія виникає *після* закінчення обробки запиту додатком, але *до* відправки відповіді. Справжнє ім’я події - `afterRequest`. @@ -536,7 +536,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; користувачу. Ці події виникають *після* поточної події. -### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] Подія виникає *до* виконання кожної [дії контролера](structure-controllers.md). Справжнє ім’я події - `beforeAction`. @@ -563,7 +563,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; [[yii\base\ActionEvent::isValid]] рівним `false`, то всі наступні події не будуть викликані. -### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] Ця подія виникає *після* виконання [дії контролера](structure-controllers.md). Справжнє ім’я події - `afterAction`. @@ -586,7 +586,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; Таким чином, контролери є першими, хто ініціює дану подію, далі йдуть модулі (якщо такі є), і врешті - у додатках. -## Життєвий цикл додатка +## Життєвий цикл додатка ![Життєвий цикл додатка](images/application-lifecycle.png) diff --git a/docs/guide-uk/structure-controllers.md b/docs/guide-uk/structure-controllers.md index b7902b7da45..8e3b3830937 100644 --- a/docs/guide-uk/structure-controllers.md +++ b/docs/guide-uk/structure-controllers.md @@ -8,7 +8,7 @@ [представлення](structure-views.md), і в кінцевому підсумку згенерують вихідні відповіді. -## Дії +## Дії Контролери складаються з *дій*, які є основними блоками, до яких може звертатись кінцевий користувач і запитувати виконання того або іншого функціоналу. В контролері може бути одна або декілька дій. @@ -62,7 +62,7 @@ class PostController extends Controller предаставлення `create`, через яке користувач зможе вказати необхідні дані. -## Маршрути +## Маршрути Кінцеві користувачі звертаються до дій з допомогою так названих *маршрутів*. Маршрут це рядок, який складається з наступних частин: @@ -89,7 +89,7 @@ ModuleID/ControllerID/ActionID про те, як маршрути співставляються із діями. -## Створення контролерів +## Створення контролерів У [[yii\web\Application|веб додатках]] контролери повинні бути успадкованими від класу [[yii\web\Controller]] або його нащадків. Аналогічно для [[yii\console\Application|консольних додатків]], контролери повинні бути @@ -106,7 +106,7 @@ class SiteController extends Controller ``` -### ID контролерів +### ID контролерів За звичай контролер зроблений таким чином, що він повинен обробляти запити, які пов’язані з певним ресурсом. Саме з цієї причини, ID контролерів за завичай є іменниками, які посилаються на ресурс, який вони обробляють. @@ -123,7 +123,7 @@ ID контролера також може містити префікс суб (наприклад `panels/admin`). -### Іменування класів контролерів +### Іменування класів контролерів Назви класів контролерів можуть бути отримані із ID контролерів наступними правилами: @@ -151,7 +151,7 @@ ID контролера також може містити префікс суб свої контролери у декілька категорій і не хочете використовувати [модулі](structure-modules.md). -### Мапа контролерів +### Мапа контролерів Ви можете налаштувати [[yii\base\Application::controllerMap|мапу контролерів]] для того, щоб подолати описані вище обмеження іменування ID контролерів і назв класів. В основному, це дуже зручно, коли ви використовуєте @@ -175,7 +175,7 @@ ID контролера також може містити префікс суб ] ``` -### Контролер за замовчуванням +### Контролер за замовчуванням Кожний додаток має контролер за замовчуванням, вказаний через властивість [[yii\base\Application::defaultRoute]]. Коли в запиті не вказано [маршрут](#ids-routes), то буде використано маршрут із даної властивості. @@ -193,7 +193,7 @@ ID контролера також може містити префікс суб ``` -## Створення дій +## Створення дій Створення дій може бути таким же простим, як і оголошення так званих *методов дій* у класі контролера. Метод дії це *public* метод, ім’я якого починається зі слова `action`. Значення методі дії, що повертається, є даними @@ -219,7 +219,7 @@ class SiteController extends Controller ``` -### ID дій +### ID дій Частіше за все, дія розробляється для певної конкретної обробки ресурса. З цієї причини ID дій, в основному, є дієсловами, такими як `view`, `update`, і т.д. @@ -235,7 +235,7 @@ class SiteController extends Controller контролерах або при використанні у [розширеннях](structure-extensions.md). -### Вбудовані дії +### Вбудовані дії Вбудовані дії це ті дії, які визначені у рамках методів контролера, як ми це вже обговорили. @@ -257,7 +257,7 @@ class SiteController extends Controller перерозподілити дії, ви повинні визначити їх як *окремими діями*. -### Окремі дії +### Окремі дії Окремі дії визначаються в якості класів, успадкованих від [[yii\base\Action]] або його нащадків. Наприклад, в релізах Yii присутні [[yii\web\ViewAction]] та [[yii\web\ErrorAction]], обидва класи є окремими діями. @@ -304,7 +304,7 @@ class HelloWorldAction extends Action ``` -### Результати дій +### Результати дій Значення, що повертається від метода дії або метода `run()` окремої дії дуже важливе. Воно є результатом виконання відповідної дії. @@ -330,7 +330,7 @@ public function actionForward() ``` -### Параметри дій +### Параметри дій Методи дій для вбудованих дій і методи `run()` для окремих дій можуть приймати, так звані, *параметри дії*. Їх значення беруться із запитів. Для [[yii\web\Application|веб додатків]], значення кожного з параметрів дії @@ -382,7 +382,7 @@ public function actionView(array $id, $version = null) про параметри консольних додатків наведено в секції [Консольні команди](tutorial-console.md). -### Дія за замовчуванням +### Дія за замовчуванням Кожний контролер містить дію за замовчуванням, визначену через властивість [[yii\base\Controller::defaultAction]]. Коли [маршрут](#ids-routes) містить тільки ID контролера, то розуміється, що було запитана дія контролера @@ -408,7 +408,7 @@ class SiteController extends Controller ``` -## Життєвий цикл контролера +## Життєвий цикл контролера При обробці запиту, [додаток](structure-applications.md) створить контролер, базуючись на [маршруті](#routes), який було запитано. Для виконання запиту, контролер пройде через наступні етапи життєвого циклу: @@ -433,7 +433,7 @@ class SiteController extends Controller 6. Додаток, отримавши результат виконання дії, привласнює його об’єкту [response](runtime-responses.md). -## Кращі практики +## Кращі практики В добре організованих додатках, контролери за звичай дуже тонкі, і містять лише декілька рядків коду. Якщо ваш контролер дуже складний, це за звичай означає, що вам потрібно провести його рефакторинг і diff --git a/docs/guide-uk/structure-entry-scripts.md b/docs/guide-uk/structure-entry-scripts.md index 09a27e3b83e..315b6c0732b 100644 --- a/docs/guide-uk/structure-entry-scripts.md +++ b/docs/guide-uk/structure-entry-scripts.md @@ -23,7 +23,7 @@ * Викликають метод [[yii\base\Application::run()]] додатка для обробки вхідного запиту. -## Веб додатки +## Веб додатки Нижче наведений код вхідного скрипта для [базового шаблону додатка](start-installation.md). @@ -47,7 +47,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## Консольні додатки +## Консольні додатки Нижче наведений аналогічний код вхідного скрипта консольного додатка: @@ -83,7 +83,7 @@ exit($exitCode); ``` -## Оголошення констант +## Оголошення констант Вхідні скрипти є найкращим місцем для оголошення глобальних констант. Yii підтримує наступні три константи: diff --git a/docs/guide-zh-CN/caching-data.md b/docs/guide-zh-CN/caching-data.md index ff9fdceb7a2..a1d98ca7497 100644 --- a/docs/guide-zh-CN/caching-data.md +++ b/docs/guide-zh-CN/caching-data.md @@ -21,7 +21,7 @@ if ($data === false) { ``` -## 缓存组件 +## 缓存组件 数据缓存需要**缓存组件**提供支持,它代表各种缓存存储器,例如内存,文件,数据库。 @@ -63,7 +63,7 @@ if ($data === false) { > Tip: 你可以注册多个缓存组件,很多依赖缓存的类默认调用名为 `cache` 的组件(例如 [[yii\web\UrlManager]])。 -### 支持的缓存存储器 +### 支持的缓存存储器 Yii 支持一系列缓存存储器,概况如下: @@ -81,7 +81,7 @@ Yii 支持一系列缓存存储器,概况如下: > Tip: 你可以在同一个应用程序中使用不同的缓存存储器。一个常见的策略是使用基于内存的缓存存储器存储小而常用的数据(例如:统计数据),使用基于文件或数据库的缓存存储器存储大而不太常用的数据(例如:网页内容)。 -## 缓存 API +## 缓存 API 所有缓存组件都有同样的基类 [[yii\caching\Cache]] ,因此都支持如下 API: @@ -105,7 +105,7 @@ $value2 = $cache['var2']; // 等价于: $value2 = $cache->get('var2'); ``` -### 缓存键 +### 缓存键 存储在缓存中的每项数据都通过键作唯一识别。当你在缓存中存储一项数据时,必须为它指定一个键,稍后从缓存中取回数据时,也需要提供相应的键。 @@ -138,7 +138,7 @@ $value2 = $cache['var2']; // 等价于: $value2 = $cache->get('var2'); 为了确保互通性,此处只能使用字母和数字。 -### 缓存过期 +### 缓存过期 默认情况下,缓存中的数据会永久存留,除非它被某些缓存策略强制移除(例如:缓存空间已满,最老的数据会被移除)。要改变此特性,你可以在调用 [[yii\caching\Cache::set()|set()]] 存储一项数据时提供一个过期时间参数。该参数代表这项数据在缓存中可保持有效多少秒。当你调用 [[yii\caching\Cache::get()|get()]] 取回数据时,如果它已经过了超时时间,该方法将返回 false,表明在缓存中找不到这项数据。例如: @@ -155,7 +155,7 @@ if ($data === false) { ``` -### 缓存依赖 +### 缓存依赖 除了超时设置,缓存数据还可能受到**缓存依赖**的影响而失效。例如,[[yii\caching\FileDependency]] 代表对一个文件修改时间的依赖。这个依赖条件发生变化也就意味着相应的文件已经被修改。因此,缓存中任何过期的文件内容都应该被置为失效状态,对 [[yii\caching\Cache::get()|get()]] 的调用都应该返回 false。 @@ -184,7 +184,7 @@ $data = $cache->get($key); - [[yii\caching\GroupDependency]]:将一项缓存数据标记到一个组名,你可以通过调用 [[yii\caching\GroupDependency::invalidate()]] 一次性将相同组名的缓存全部置为失效状态。 -## 查询缓存 +## 查询缓存 查询缓存是一个建立在数据缓存之上的特殊缓存特性。它用于缓存数据库查询的结果。 @@ -208,7 +208,7 @@ $db->endCache(); > Info: 有些 DBMS (例如:[MySQL](http://dev.mysql.com/doc/refman/5.1/en/query-cache.html))也支持数据库服务器端的查询缓存。你可以选择使用任一查询缓存机制。上文所述的查询缓存的好处在于你可以指定更灵活的缓存依赖因此可能更加高效。 -### 配置 +### 配置 查询缓存有两个通过 [[yii\db\Connection]] 设置的配置项: @@ -216,7 +216,7 @@ $db->endCache(); * [[yii\db\Connection::queryCache|queryCache]]: 缓存应用组件的 ID。默认为 `'cache'`。只有在设置了一个有效的缓存应用组件时,查询缓存才会有效。 -### 限制条件 +### 限制条件 当查询结果中含有资源句柄时,查询缓存无法使用。例如,在有些 DBMS 中使用了 `BLOB` 列的时候,缓存结果会为该数据列返回一个资源句柄。 diff --git a/docs/guide-zh-CN/caching-fragment.md b/docs/guide-zh-CN/caching-fragment.md index d8dd9709dcb..88698f68486 100644 --- a/docs/guide-zh-CN/caching-fragment.md +++ b/docs/guide-zh-CN/caching-fragment.md @@ -19,11 +19,11 @@ if ($this->beginCache($id)) { 和[[数据缓存]](caching-data.md)一样,每个片段缓存也需要全局唯一的 `$id` 标记。 -## 缓存选项 +## 缓存选项 如果要为片段缓存指定额外配置项,请通过向 [[yii\base\View::beginCache()|beginCache()]] 方法第二个参数传递配置数组。在框架内部,该数组将被用来配置一个 [[yii\widget\FragmentCache]] 小部件用以实现片段缓存功能。 -### 过期时间(duration) +### 过期时间(duration) 或许片段缓存中最常用的一个配置选项就是 [[yii\widgets\FragmentCache::duration|duration]] 了。它指定了内容被缓存的秒数。以下代码缓存内容最多一小时: @@ -39,7 +39,7 @@ if ($this->beginCache($id, ['duration' => 3600])) { 如果该选项未设置,则默认为 0,永不过期。 -### 依赖 +### 依赖 和[[数据缓存]](caching-data.md)一样,片段缓存的内容一样可以设置缓存依赖。例如一段被缓存的文章,是否重新缓存取决于它是否被修改过。 @@ -60,7 +60,7 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ``` -### 变化 +### 变化 缓存的内容可能需要根据一些参数的更改而变化。例如一个 Web 应用支持多语言,同一段视图代码也许需要生成多个语言的内容。因此可以设置缓存根据应用当前语言而变化。 @@ -76,7 +76,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ``` -### 开关 +### 开关 有时你可能只想在特定条件下开启片段缓存。例如,一个显示表单的页面,可能只需要在初次请求时缓存表单(通过 GET 请求)。随后请求所显示(通过 POST 请求)的表单不该使用缓存,因为此时表单中可能包含用户输入内容。鉴于此种情况,可以使用 [[yii\widgets\FragmentCache::enabled|enabled]] 选项来指定缓存开关,如下所示: @@ -90,7 +90,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## 缓存嵌套 +## 缓存嵌套 片段缓存可以被嵌套使用。一个片段缓存可以被另一个包裹。例如,评论被缓存在里层,同时整个评论的片段又被缓存在外层的文章中。以下代码展示了片段缓存的嵌套使用: @@ -117,7 +117,7 @@ if ($this->beginCache($id1)) { > 译注:外层的失效时间应该短于内层,外层的依赖条件应该低于内层,以确保最小的片段,返回的是最新的数据。 -## 动态内容 +## 动态内容 使用片段缓存时,可能会遇到一大段较为静态的内容中有少许动态内容的情况。例如,一个显示着菜单栏和当前用户名的页面头部。还有一种可能是缓存的内容可能包含每次请求都需要执行的 PHP 代码(例如注册资源包的代码)。这两个问题都可以使用**动态内容**功能解决。 diff --git a/docs/guide-zh-CN/caching-http.md b/docs/guide-zh-CN/caching-http.md index 05fd98eea3d..a27032fbfac 100644 --- a/docs/guide-zh-CN/caching-http.md +++ b/docs/guide-zh-CN/caching-http.md @@ -10,7 +10,7 @@ HTTP 缓存 * [[yii\filters\HttpCache::cacheControlHeader|Cache-Control]] -## `Last-Modified` 头 +## `Last-Modified` 头 `Last-Modified` 头使用时间戳标明页面自上次客户端缓存后是否被修改过。 @@ -46,7 +46,7 @@ public function behaviors() 上述代码表明 HTTP 缓存只在 `index` 操作时启用。它会基于页面最后修改时间生成一个 `Last-Modified` HTTP 头。当浏览器第一次访问 `index` 页时,服务器将会生成页面并发送至客户端浏览器。之后客户端浏览器在页面没被修改期间访问该页,服务器将不会重新生成页面,浏览器会使用之前客户端缓存下来的内容。因此服务端渲染和内容传输都将省去。 -## `ETag` 头 +## `ETag` 头 “Entity Tag”(实体标签,简称 ETag)使用一个哈希值表示页面内容。如果页面被修改过,哈希值也会随之改变。通过对比客户端的哈希值和服务器端生成的哈希值,浏览器就能判断页面是否被修改过,进而决定是否应该重新传输内容。 @@ -90,7 +90,7 @@ ETag 相比 `Last-Modified` 能实现更复杂和更精确的缓存策略。例 -## `Cache-Control` 头 +## `Cache-Control` 头 `Cache-Control` 头指定了页面的常规缓存策略。可以通过配置 [[yii\filters\HttpCache::cacheControlHeader]] 属性发送相应的头信息。默认发送以下头: @@ -98,12 +98,12 @@ ETag 相比 `Last-Modified` 能实现更复杂和更精确的缓存策略。例 Cache-Control: public, max-age=3600 ``` -## 会话缓存限制器 +## 会话缓存限制器 当页面使 session 时,PHP 将会按照 PHP.INI 中所设置的 `session.cache_limiter` 值自动发送一些缓存相关的 HTTP 头。这些 HTTP 头有可能会干扰你原本设置的 `HttpCache` 或让其失效。为了避免此问题,默认情况下 `HttpCache` 禁止自动发送这些头。想改变这一行为,可以配置 [[yii\filters\HttpCache::sessionCacheLimiter]] 属性。该属性接受一个字符串值,包括 `public`,`private`,`private_no_expire`,和 `nocache`。请参考 PHP 手册中的[缓存限制器](http://www.php.net/manual/en/function.session-cache-limiter.php)了解这些值的含义。 -## SEO 影响 +## SEO 影响 搜索引擎趋向于遵循站点的缓存头。因为一些爬虫的抓取频率有限制,启用缓存头可以可以减少重复请求数量,增加爬虫抓取效率(译者:大意如此,但搜索引擎的排名规则不了解,好的缓存策略应该是可以为用户体验加分的)。 diff --git a/docs/guide-zh-CN/concept-aliases.md b/docs/guide-zh-CN/concept-aliases.md index a8b27a521d7..658b7227cd5 100644 --- a/docs/guide-zh-CN/concept-aliases.md +++ b/docs/guide-zh-CN/concept-aliases.md @@ -4,7 +4,7 @@ 别名用来表示文件路径和 URL,这样就避免了在代码中硬编码一些绝对路径和 URL。一个别名必须以 `@` 字符开头,以区别于传统的文件路径和 URL。Yii 预定义了大量可用的别名。例如,别名 `@yii` 指的是 Yii 框架本身的安装目录,而 `@web` 表示的是当前运行应用的根 URL。 -定义别名 +定义别名 ---------------- 你可以调用 [[Yii::setAlias()]] 来给文件路径或 URL 定义别名: @@ -40,7 +40,7 @@ return [ ``` -解析别名 +解析别名 ----------------- 你可以调用 [[Yii::getAlias()]] 命令来解析根别名到对应的文件路径或 URL。同样的页面也可以用于解析衍生别名。例如: @@ -67,7 +67,7 @@ echo Yii::getAlias('@foo/bar/file.php'); // 输出:/path2/bar/file.php 若 `@foo/bar` 未被定义为根别名,最后一行语句会显示为 `/path/to/foo/bar/file.php`。 -使用别名 +使用别名 ------------- 别名在 Yii 的很多地方都会被正确识别,无需调用 [[Yii::getAlias()]] 来把它们转换为路径/URL。例如,[[yii\caching\FileCache::cachePath]] 能同时接受文件路径或是指向文件路径的别名,因为通过 `@` 前缀能区分它们。 @@ -83,7 +83,7 @@ $cache = new FileCache([ 请关注 API 文档了解特定属性或方法参数是否支持别名。 -预定义的别名 +预定义的别名 ------------------ Yii 预定义了一系列别名来简化常用路径和 URL 的使用: @@ -98,7 +98,7 @@ Yii 预定义了一系列别名来简化常用路径和 URL 的使用: `@yii` 别名是在[入口脚本](structure-entry-scripts.md)里包含 `Yii.php` 文件时定义的,其他的别名都是在[配置应用](concept-configurations.md)的时候,于应用的构造方法内定义的。 -扩展的别名 +扩展的别名 ----------------- 每一个通过 Composer 安装的 [扩展](structure-extensions.md) 都自动添加了一个别名。该别名会以该扩展在 `composer.json` 文件中所声明的根命名空间为名,且他直接代指该包的根目录。例如,如果你安装有 `yiisoft/yii2-jui` 扩展,会自动得到 `@yii/jui` 别名,它定义于[引导启动](runtime-bootstrapping.md)阶段: diff --git a/docs/guide-zh-CN/concept-autoloading.md b/docs/guide-zh-CN/concept-autoloading.md index c0e7b6c3b15..4b9697a8e7c 100644 --- a/docs/guide-zh-CN/concept-autoloading.md +++ b/docs/guide-zh-CN/concept-autoloading.md @@ -6,7 +6,7 @@ Yii 依靠[类自动加载机制](http://www.php.net/manual/en/language.oop5.aut > 注意:为了简化叙述,本篇文档中我们只会提及类的自动加载。不过,要记得文中的描述同样也适用于接口和Trait(特质)的自动加载哦。 -使用 Yii 自动加载器 +使用 Yii 自动加载器 ------------------------ 要使用 Yii 的类自动加载器,你需要在创建和命名类的时候遵循两个简单的规则: @@ -27,7 +27,7 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); 在[高级应用模版](tutorial-advanced-app.md)里,每一逻辑层级会使用他自己的根别名。比如,前端层会使用 `@frontend` 而后端层会使用 `@backend`。因此,你可以把前端的类放在 `frontend` 命名空间,而后端的类放在 `backend`。 这样这些类就可以被 Yii 自动加载了。 -类映射表(Class Map) +类映射表(Class Map) --------- Yii 类自动加载器支持**类映射表**功能,该功能会建立一个从类的名字到类文件路径的映射。当自动加载器加载一个文件时,他首先检查映射表里有没有该类。如果有,对应的文件路径就直接加载了,省掉了进一步的检查。这让类的自动加载变得超级快。事实上所有的 Yii 核心类都是这样加载的。 @@ -41,7 +41,7 @@ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; [别名](concept-aliases.md)可以被用于指定类文件的路径。你应该在[引导启动](runtime-bootstrapping.md)的过程中设置类映射表,这样映射表就可以在你使用具体类之前就准备好。 -用其他自动加载器 +用其他自动加载器 ----------------------- 因为 Yii 完全支持 Composer 管理依赖包,所以推荐你也同时安装 Composer 的自动加载器,如果你用了一些自带自动加载器的第三方类库,你应该也安装下它们。 @@ -58,7 +58,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); > 补充:若你不想要使用 Yii 的自动加载器,你必须创建一个你自己版本的 `Yii.php` 文件,并把它包含进你的[入口脚本](structure-entry-scripts.md)里。 -自动加载扩展类 +自动加载扩展类 ----------------------------- Yii 自动加载器支持自动加载[扩展](structure-extensions.md)的类。唯一的要求是它需要在 `composer.json` diff --git a/docs/guide-zh-CN/concept-configurations.md b/docs/guide-zh-CN/concept-configurations.md index a55ba48b2e2..bbd3f0c823b 100644 --- a/docs/guide-zh-CN/concept-configurations.md +++ b/docs/guide-zh-CN/concept-configurations.md @@ -28,7 +28,7 @@ Yii::configure($object, $config); 请注意,如果配置一个已存在的对象,那么配置数组中不应该包含指定类名的 `class` 元素。 -## 配置的格式 +## 配置的格式 一个配置的格式可以描述为以下形式: @@ -71,7 +71,7 @@ Yii::configure($object, $config); Yii 中的配置可以用在很多场景。本章开头我们展示了如何使用 [[Yii::creatObject()]] 根据配置信息创建对象。本小节将介绍配置的两种主要用法 —— 配置应用与配置小部件。 -### 应用的配置 +### 应用的配置 [应用](structure-applications.md)的配置可能是最复杂的配置之一。因为 [[yii\web\Application|application]] 类拥有很多可配置的属性和事件。更重要的是它的 [[yii\web\Application::components|components]] 属性可以接收配置数组并通过应用注册为组件。以下是一个针对[基础应用模板](start-installation.md)的应用配置概要: @@ -116,7 +116,7 @@ $config = [ 更多关于应用 `components` 属性配置的信息可以查阅[应用](structure-applications.md)以及[服务定位器](concept-service-locator.md)章节。 -### 小部件的配置 +### 小部件的配置 使用[小部件](structure-widgets.md)时,常常需要配置以便自定义其属性。 [[yii\base\Widget::widget()]] 和 [[yii\base\Widget::begin()]] 方法都可以用来创建小部件。它们可以接受配置数组: @@ -138,7 +138,7 @@ echo Menu::widget([ 请注意,代码中已经给出了类名 `yii\widgets\Menu',配置数组**不应该**再包含 `class` 键。 -## 配置文件 +## 配置文件 当配置的内容十分复杂,通用做法是将其存储在一或多个 PHP 文件中,这些文件被称为**配置文件**。一个配置文件返回的是 PHP 数组。例如,像这样把应用配置信息存储在名为 `web.php` 的文件中: @@ -188,7 +188,7 @@ $config = require('path/to/web.php'); ``` -## 默认配置 +## 默认配置 [[Yii::createObject()]] 方法基于[依赖注入容器](concept-di-container.md)实现。使用 [[Yii::creatObject()]] 创建对象时,可以附加一系列**默认配置**到指定类的任何实例。默认配置还可以在[入口脚本](runtime-bootstrapping.md)中调用 `Yii::$container->set()` 来定义。 @@ -203,7 +203,7 @@ $config = require('path/to/web.php'); 不使用默认配置的话,你就得在任何使用分页器的地方,都配置 `maxButtonCount` 的值。 -## 环境常量 +## 环境常量 配置经常要随着应用运行的不同环境更改。例如在开发环境中,你可能使用名为 `mydb_dev` 的数据库,而生产环境则使用 `mydb_prod` 数据库。为了便于切换使用环境,Yii 提供了一个定义在入口脚本中的 `YII_ENV` 常量。如下: diff --git a/docs/guide-zh-CN/concept-di-container.md b/docs/guide-zh-CN/concept-di-container.md index 2f8050f1a80..da1c1ce3309 100644 --- a/docs/guide-zh-CN/concept-di-container.md +++ b/docs/guide-zh-CN/concept-di-container.md @@ -4,7 +4,7 @@ 依赖注入(Dependency Injection,DI)容器就是一个对象,它知道怎样初始化并配置对象及其依赖的所有对象。[Martin 的文章](http://martinfowler.com/articles/injection.html) 已经解释了 DI 容器为什么很有用。这里我们主要讲解 Yii 提供的 DI 容器的使用方法。 -依赖注入 +依赖注入 -------------------- Yii 通过 [[yii\di\Container]] 类提供 DI 容器特性。它支持如下几种类型的依赖注入: @@ -14,7 +14,7 @@ Yii 通过 [[yii\di\Container]] 类提供 DI 容器特性。它支持如下几 * PHP 回调注入. -### 构造方法注入 +### 构造方法注入 在参数类型提示的帮助下,DI 容器实现了构造方法注入。当容器被用于创建一个新对象时,类型提示会告诉它要依赖什么类或接口。容器会尝试获取它所依赖的类或接口的实例,然后通过构造器将其注入新的对象。例如: @@ -33,7 +33,7 @@ $foo = new Foo($bar); ``` -### Setter 和属性注入 +### Setter 和属性注入 Setter 和属性注入是通过[配置](concept-configurations.md)提供支持的。当注册一个依赖或创建一个新对象时,你可以提供一个配置,该配置会提供给容器用于通过相应的 Setter 或属性注入依赖。例如: @@ -64,7 +64,7 @@ $container->get('Foo', [], [ ``` -### PHP 回调注入 +### PHP 回调注入 这种情况下,容器将使用一个注册过的 PHP 回调创建一个类的新实例。回调负责解决依赖并将其恰当地注入新创建的对象。例如: @@ -77,7 +77,7 @@ $foo = $container->get('Foo'); ``` -注册依赖关系 +注册依赖关系 ------------------------ 可以用 [[yii\di\Container::set()]] 注册依赖关系。注册会用到一个依赖关系名称和一个依赖关系的定义。依赖关系名称可以是一个类名,一个接口名或一个别名。依赖关系的定义可以是一个类名,一个配置数组,或者一个 PHP 回调。 @@ -140,7 +140,7 @@ $container->setSingleton('yii\db\Connection', [ ``` -解决依赖关系 +解决依赖关系 ---------------------- 注册依赖关系后,就可以使用 DI 容器创建新对象了。容器会自动解决依赖关系,将依赖实例化并注入新创建的对象。依赖关系的解决是递归的,如果一个依赖关系中还有其他依赖关系,则这些依赖关系都会被自动解决。 @@ -216,7 +216,7 @@ $lister = new UserLister($finder); ``` -实践中的运用 +实践中的运用 --------------- 当在应用程序的[入口脚本](structure-entry-scripts.md)中引入 `Yii.php` 文件时,Yii 就创建了一个 DI 容器。这个 DI 容器可以通过 [[Yii::$container]] 访问。当调用 [[Yii::createObject()]] 时,此方法实际上会调用这个容器的 [[yii\di\Container::get()|get()]] 方法创建新对象。如上所述,DI 容器会自动解决依赖关系(如果有)并将其注入新创建的对象中。因为 Yii 在其多数核心代码中都使用了 @@ -269,7 +269,7 @@ class HotelController extends Controller 现在如果你再次访问这个控制器,一个 `app\components\BookingService` 的实例就会被创建并被作为第三个参数注入到控制器的构造器中。 -什么时候注册依赖关系 +什么时候注册依赖关系 ----------------------------- 由于依赖关系在创建新对象时需要解决,因此它们的注册应该尽早完成。如下是推荐的实践: @@ -278,7 +278,7 @@ class HotelController extends Controller * 如果你是一个可再分发[扩展](structure-extensions.md)的开发者,你可以将依赖关系注册到扩展的引导类中。 -总结 +总结 ------- 依赖注入和[服务定位器](concept-service-locator.md)都是流行的设计模式,它们使你可以用充分解耦且更利于测试的风格构建软件。强烈推荐你阅读 [Martin 的文章](http://martinfowler.com/articles/injection.html) ,对依赖注入和服务定位器有个更深入的理解。 diff --git a/docs/guide-zh-CN/input-validation.md b/docs/guide-zh-CN/input-validation.md index e037326f68a..ef9f3a5224d 100644 --- a/docs/guide-zh-CN/input-validation.md +++ b/docs/guide-zh-CN/input-validation.md @@ -26,7 +26,7 @@ if ($model->validate()) { 3. 用每个激活规则去验证每个与之关联的激活特性。若失败,则记录下对应模型特性的错误信息。 -## 声明规则(Rules) +## 声明规则(Rules) 要让 `validate()` 方法起作用,你需要声明与需验证模型特性相关的验证规则。为此,需要重写 [[yii\base\Model::rules()]] 方法。下面的例子展示了如何声明用于验证 `ContactForm` 模型的相关验证规则: @@ -82,7 +82,7 @@ public function rules() 基于以上验证步骤,有且仅有声明在 `scenarios()` 方法里的激活特性,且它还必须与一或多个声明自 `rules()` 里的激活规则相关联才会被验证。 -### 自定义错误信息 +### 自定义错误信息 大多数的验证器都有默认的错误信息,当模型的某个特性验证失败的时候,该错误信息会被返回给模型。比如,用 [[yii\validators\RequiredValidator|required]] 验证器的规则检验 `username` 特性失败的话,会返还给模型 "Username cannot be blank." 信息。 @@ -101,7 +101,7 @@ public function rules() 你也可以像配置验证器的其他属性一样配置它们俩各自的错误信息。 -### 验证事件 +### 验证事件 当调用 [[yii\base\Model::validate()]] 方法的过程里,它同时会调用两个特殊的方法,把它们重写掉可以实现自定义验证过程的目的: @@ -109,7 +109,7 @@ public function rules() * [[yii\base\Model::afterValidate()]]:在默认的实现中会触发 [[yii\base\Model::EVENT_AFTER_VALIDATE]] 事件。你可以重写该方法或者响应此事件,来在验证结束之后,再进行一些收尾的工作。 -### 条件式验证 +### 条件式验证 若要只在某些条件满足时,才验证相关特性,比如:是否验证某特性取决于另一特性的值,你可以通过 [[yii\validators\Validator::when|when]] 属性来定义相关条件。举例而言, @@ -147,7 +147,7 @@ function ($model, $attribute) ``` -### 数据预处理 +### 数据预处理 用户输入经常需要进行数据过滤,或者叫预处理。比如你可能会需要先去掉 `username` 输入的收尾空格。你可以通过使用验证规则来实现此目的。 @@ -165,7 +165,7 @@ function ($model, $attribute) 如你所见,这些验证规则并不真的对输入数据进行任何验证。而是,对输入数据进行一些处理,然后把它们存回当前被验证的模型特性。 -### 处理空输入 +### 处理空输入 当输入数据是通过 HTML 表单,你经常会需要给空的输入项赋默认值。你可以通过调整 [default](tutorial-core-validators.md#default) 验证器来实现这一点。举例来说, @@ -196,7 +196,7 @@ true,则它们不会对空值进行任何处理。也就是当他们的关联 [核心验证器](tutorial-core-validators.md) 之中,只有 `captcha`(验证码),`default`(默认值),`filter`(滤镜),`required`(必填),以及 `trim`(去首尾空格),这几个验证器会处理空输入。 -## 临时验证 +## 临时验证 有时,你需要对某些没有绑定任何模型类的值进行 **临时验证**。 @@ -262,12 +262,12 @@ public function actionSearch($name, $email) `$model->name` 和 `$model->email`。 -## 创建验证器(Validators) +## 创建验证器(Validators) 除了使用 Yii 的发布版里所包含的[核心验证器](tutorial-core-validators.md)之外,你也可以创建你自己的验证器。自定义的验证器可以是**行内验证器**,也可以是**独立验证器**。 -### 行内验证器(Inline Validators) +### 行内验证器(Inline Validators) 行内验证器是一种以模型方法或匿名函数的形式定义的验证器。这些方法/函数的结构如下: @@ -324,7 +324,7 @@ class MyForm extends Model ``` -### 独立验证器(Standalone Validators) +### 独立验证器(Standalone Validators) 独立验证器是继承自 [[yii\validators\Validator]] 或其子类的类。你可以通过重写 [[yii\validators\Validator::validateAttribute()]] 来实现它的验证规则。若特性验证失败,可以调用 @@ -353,14 +353,14 @@ class CountryValidator extends Validator `validateValue()`实现的。 -## 客户端验证器(Client-Side Validation) +## 客户端验证器(Client-Side Validation) 当终端用户通过 HTML 表单提供相关输入信息时,我们可能会需要用到基于 JavaScript 的客户端验证。因为,它可以让用户更快速的得到错误信息,也因此可以提供更好的用户体验。你可以使用或自己实现除服务器端验证之外,**还能额外**客户端验证功能的验证器。 > 补充:尽管客户端验证为加分项,但它不是必须项。它存在的主要意义在于给用户提供更好的客户体验。正如“永远不要相信来自终端用户的输入信息”,也同样永远不要相信客户端验证。基于这个理由,你应该始终如前文所描述的那样,通过调用 [[yii\base\Model::validate()]] 方法执行服务器端验证。 -### 使用客户端验证 +### 使用客户端验证 许多[核心验证器](tutorial-core-validators.md)都支持开箱即用的客户端验证。你只需要用 [[yii\widgets\ActiveForm]] 的方式构建 HTML 表单即可。比如,下面的 `LoginForm`(登录表单)声明了两个规则:其一为 [required](tutorial-core-validators.md#required) 核心验证器,它同时支持客户端与服务器端的验证;另一个则采用 `validatePassword` 行内验证器,它只支持服务器端。 @@ -412,7 +412,7 @@ class LoginForm extends Model 若你需要完全关闭客户端验证,你只需配置 [[yii\widgets\ActiveForm::enableClientValidation]] 属性为 false。你同样可以关闭各个输入框各自的客户端验证,只要把它们的 [[yii\widgets\ActiveField::enableClientValidation]] 属性设为 false。 -### 自己实现客户端验证 +### 自己实现客户端验证 要穿件一个支持客户端验证的验证器,你需要实现 [[yii\validators\Validator::clientValidateAttribute()]] 方法,用于返回一段用于运行客户端验证的 JavaScript 代码。在这段 JavaScript 代码中,你可以使用以下预定义的变量: diff --git a/docs/guide-zh-CN/output-formatter.md b/docs/guide-zh-CN/output-formatter.md index 2587ce54bfe..677abc45934 100644 --- a/docs/guide-zh-CN/output-formatter.md +++ b/docs/guide-zh-CN/output-formatter.md @@ -52,7 +52,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // 输出: 1 января 2014 > 可参考: [为国际化设置PHP环境](tutorial-i18n.md#setup-environment). -配置格式器 +配置格式器 ------------------------- 可配置[[yii\i18n\Formatter|formatter class]]的属性来调整格式器方法的默认格式, @@ -71,7 +71,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // 输出: 1 января 2014 ], ``` -格式化日期和时间 +格式化日期和时间 ------------------------------- 格式器类为格式化日期和时间提供了多个方法: @@ -107,7 +107,7 @@ echo Yii::$app->formatter->asDate('now', 'yyyy-MM-dd'); // 2014-10-06 echo Yii::$app->formatter->asDate('now', 'php:Y-m-d'); // 2014-10-06 ``` -### 时区 +### 时区 当格式化日期和时间时,Yii会将它们转换为对应的 [[yii\i18n\Formatter::timeZone|configured time zone]] 时区, 输入的值在没有指定时区时候会被当作UTC时间,因此,推荐存储所有的日期和时间为UTC而不是UNIX时间戳,UNIX通常也是UTC。 @@ -126,7 +126,7 @@ echo Yii::$app->formatter->asTime('2014-10-06 14:41:00 CEST'); // 14:41:00 > 也可参考:[为国际化设置PHP环境](tutorial-i18n.md#setup-environment). -格式化数字 +格式化数字 ------------------ 格式器类提供如下方法格式化数值: @@ -154,7 +154,7 @@ For formatting numeric values the formatter class provides the following methods ] ``` -其他格式器 +其他格式器 ---------------- 除了日期、时间和数字格式化外,Yii提供其他用途提供一些实用的格式器: @@ -172,7 +172,7 @@ Additional to date, time and number formatting, Yii provides a set of other usef - [[yii\i18n\Formatter::asBoolean()|boolean]] - 值会格式化成布尔型值,默认情况下 `true` 对应 `Yes`,`false` 对应 `No`, 可根据应用语言配置进行翻译,可以配置[[yii\i18n\Formatter::booleanFormat]]-属性来调整; -`null`-值 +`null`-值 ------------- 对于PHP的`null`值,格式器类会打印一个占位符而不是空字符串,空字符串默认会显示对应当前语言`(not set)`, diff --git a/docs/guide-zh-CN/rest-quick-start.md b/docs/guide-zh-CN/rest-quick-start.md index 17e571712e4..1f8ed5fa9a6 100644 --- a/docs/guide-zh-CN/rest-quick-start.md +++ b/docs/guide-zh-CN/rest-quick-start.md @@ -22,7 +22,7 @@ Yii 提供了一整套用来简化实现 RESTful 风格的 Web Service 服务的 你已经创建了 [[yii\db\ActiveRecord|ActiveRecord]] 类 `app\models\User` 来访问该用户数据. -## 创建一个控制器 +## 创建一个控制器 首先,创建一个控制器类 `app\controllers\UserController` 如下, @@ -41,7 +41,7 @@ class UserController extends ActiveController 作为 `app\models\User`, 控制器就能知道使用哪个模型去获取和处理数据。 -## 配置URL规则 +## 配置URL规则 然后,修改有关在应用程序配置的`urlManager`组件的配置: @@ -60,7 +60,7 @@ class UserController extends ActiveController 用户的数据就能通过美化的 URL 和有意义的 http 动词进行访问和操作。 -## 尝试 +## 尝试 随着以上所做的最小的努力,你已经完成了创建用于访问用户数据 的 RESTful 风格的 API。你所创建的 API 包括: @@ -158,7 +158,7 @@ Content-Type: application/xml > 你应该在 [响应格式](rest-response-formatting.md) 部分中过滤掉这些字段。 -## 总结 +## 总结 使用 Yii 框架的 RESTful 风格的 API, 在控制器的操作中实现API末端,使用 控制器来组织末端接口为一个单一的资源类型。 diff --git a/docs/guide-zh-CN/rest-response-formatting.md b/docs/guide-zh-CN/rest-response-formatting.md index 125f0a04a1c..477c827fe93 100644 --- a/docs/guide-zh-CN/rest-response-formatting.md +++ b/docs/guide-zh-CN/rest-response-formatting.md @@ -13,7 +13,7 @@ [yii\web\Response::formatters|response]] 应用程序组件来注册完成。 -## 内容协商 +## 内容协商 Yii 提供了通过 [[yii\filters\ContentNegotiator]] 过滤器支持内容协商。RESTful API 基于 控制器类 [[yii\rest\Controller]] 在 `contentNegotiator` 下配备这个过滤器。 @@ -81,7 +81,7 @@ public function behaviors() 中支持被响应格式名称。 -## 数据序列化 +## 数据序列化 正如我们上面所描述的,[[yii\rest\Serializer]] 负责转换资源的中间件 对象或集合到数组。它将对象 [[yii\base\ArrayableInterface]] 作为 diff --git a/docs/guide-zh-CN/runtime-handling-errors.md b/docs/guide-zh-CN/runtime-handling-errors.md index 58671238b26..9b80e7cfeb4 100644 --- a/docs/guide-zh-CN/runtime-handling-errors.md +++ b/docs/guide-zh-CN/runtime-handling-errors.md @@ -13,7 +13,7 @@ Yii错误处理器做以下工作来提升错误处理效果: 可通过在应用的[入口脚本](structure-entry-scripts.md)中定义常量`YII_ENABLE_ERROR_HANDLER`来禁用。 -## 使用错误处理器 +## 使用错误处理器 [[yii\web\ErrorHandler|error handler]] 注册成一个名称为`errorHandler`[应用组件](structure-application-components.md), 可以在应用配置中配置它类似如下: @@ -55,7 +55,7 @@ throw new NotFoundHttpException(); ``` -## 自定义错误显示 +## 自定义错误显示 [[yii\web\ErrorHandler|error handler]]错误处理器根据常量`YII_DEBUG`的值来调整错误显示, 当`YII_DEBUG` 为 true (表示在调试模式),错误处理器会显示异常以及详细的函数调用栈和源代码行数来帮助调试, @@ -74,7 +74,7 @@ throw new NotFoundHttpException(); 使用自定义的错误显示视图。 -### 使用错误操作 +### 使用错误操作 使用指定的错误[操作](structure-controllers.md) 来自定义错误显示更方便, 为此,首先配置`errorHandler`组件的 [[yii\web\ErrorHandler::errorAction|errorAction]] 属性,类似如下: @@ -138,7 +138,7 @@ public function actionError() 错误操作和错误视图已经定义好了。 -### 自定义错误格式 +### 自定义错误格式 错误处理器根据[响应](runtime-responses.md)设置的格式来显示错误, 如果[[yii\web\Response::format|response format]] 响应格式为`html`, 会使用错误或异常视图来显示错误信息,如上一小节所述。 diff --git a/docs/guide-zh-CN/runtime-responses.md b/docs/guide-zh-CN/runtime-responses.md index 5098ad0611b..b522c0f5530 100644 --- a/docs/guide-zh-CN/runtime-responses.md +++ b/docs/guide-zh-CN/runtime-responses.md @@ -10,7 +10,7 @@ 在本节,将会描述如何构建响应和发送给终端用户。 -## 状态码 +## 状态码 构建响应时,最先应做的是标识请求是否成功处理的状态,可通过设置 [[yii\web\Response::statusCode]] 属性,该属性使用一个有效的 @@ -50,7 +50,7 @@ throw new \yii\web\HttpException(402); ``` -## HTTP 头部 +## HTTP 头部 可在 `response` 组件中操控[[yii\web\Response::headers|header collection]]来发送HTTP头部信息,例如: @@ -70,7 +70,7 @@ $values = $headers->remove('Pragma'); > 补充: 头名称是大小写敏感的,在[[yii\web\Response::send()]]方法调用前新注册的头信息并不会发送给用户。 -## 响应主体 +## 响应主体 大多是响应应有一个主体存放你想要显示给终端用户的内容。 @@ -143,7 +143,7 @@ public function actionInfo() 可使用 [依赖注入](concept-di-container.md) 应用通用配置到你新的响应对象。 -## 浏览器跳转 +## 浏览器跳转 浏览器跳转依赖于发送一个`Location` HTTP 头,因为该功能通常被使用,Yii提供对它提供了特别的支持。 @@ -177,7 +177,7 @@ public function actionOld() 因此,如果你使用该JavaScript 文件(通过[[yii\web\YiiAsset]] 资源包注册),就不需要编写AJAX跳转的代码。 -## 发送文件 +## 发送文件 和浏览器跳转类似,文件发送是另一个依赖指定HTTP头的功能,Yii提供方法集合来支持各种文件发送需求,它们对HTTP头都有内置的支持。 @@ -212,7 +212,7 @@ Web应用可在服务器发送文件前结束,为使用该功能,可调用[[ - Cherokee: [X-Sendfile and X-Accel-Redirect](http://www.cherokee-project.com/doc/other_goodies.html#x-sendfile) -## 发送响应 +## 发送响应 在[[yii\web\Response::send()]] 方法调用前响应中的内容不会发送给用户,该方法默认在[[yii\base\Application::run()]] 结尾自动调用,尽管如此,可以明确调用该方法强制立即发送响应。 diff --git a/docs/guide-zh-CN/runtime-routing.md b/docs/guide-zh-CN/runtime-routing.md index 949e7810a5f..d8302a8fd68 100644 --- a/docs/guide-zh-CN/runtime-routing.md +++ b/docs/guide-zh-CN/runtime-routing.md @@ -5,7 +5,7 @@ 方法时,它进行的第一个操作就是解析输入的请求,然后实例化对应的[控制器操作](structure-controllers.md)处理这个请求。该过程就被称为**引导路由(routing)**。(译注:中文里既是动词也是名词) -## 解析路由 +## 解析路由 路由引导的第一步,是把传入请求解析为一个路由。如我们在 [控制器(Controllers)](structure-controllers.md#routes) 章节中所描述的那样,路由是一个用于定位控制器操作的地址。这个过程通过 `request` 应用组件的 [[yii\web\Request::resolve()|resolve()]] @@ -18,7 +18,7 @@ 假使某路由最终实在无法被确定,那么 `request` 组件会抛出 [[yii\web\NotFoundHttpException]] 异常(译注:大名鼎鼎的 404)。 -### 缺省路由 +### 缺省路由 如果传入请求并没有提供一个具体的路由,(一般这种情况多为于对首页的请求)此时就会启用由 [[yii\web\Application::defaultRoute]] 属性所指定的缺省路由。该属性的默认值为 `site/index`,它指向 `site` 控制器的 `index` @@ -32,7 +32,7 @@ return [ ``` -### `catchAll` 路由(全拦截路由) +### `catchAll` 路由(全拦截路由) 有时候,你会想要将你的 Web 应用临时调整到维护模式,所有的请求下都会显示相同的信息页。当然,要实现这一点有很多种方法。这里面最简单快捷的方法就是在应用配置中设置下 @@ -50,7 +50,7 @@ return [ 当设置了 `catchAll` 属性时,它会替换掉所有从输入的请求中解析出来的路由。如果是上文的这种设置,用于处理所有传入请求的操作都会是相同的 `site/offline`。 -## 创建操作 +## 创建操作 一旦请求路由被确定了,紧接着的步骤就是创建一个“操作(action)”对象,用以响应该路由。 diff --git a/docs/guide-zh-CN/runtime-sessions-cookies.md b/docs/guide-zh-CN/runtime-sessions-cookies.md index 28c74dcf355..db00d922860 100644 --- a/docs/guide-zh-CN/runtime-sessions-cookies.md +++ b/docs/guide-zh-CN/runtime-sessions-cookies.md @@ -6,13 +6,13 @@ Sessions 和 Cookies 可通过面向对象方式访问它们。 -## Sessions +## Sessions 和 [请求](runtime-requests.md) 和 [响应](runtime-responses.md)类似, 默认可通过为[[yii\web\Session]] 实例的`session` [应用组件](structure-application-components.md) 来访问sessions。 -### 开启和关闭 Sessions +### 开启和关闭 Sessions 可使用以下代码来开启和关闭session。 @@ -36,7 +36,7 @@ $session->destroy(); 因为方法内部会先检查session是否已经开启。 -### 访问Session数据 +### 访问Session数据 To access the data stored in session, you can do the following: 可使用如下方式访问session中的数据: @@ -121,7 +121,7 @@ $session['captcha.lifetime'] = 3600; 而是将每个数组项变成有相同键前缀的session变量。 -### 自定义Session存储 +### 自定义Session存储 [[yii\web\Session]] 类默认存储session数据为文件到服务器上,Yii提供以下session类实现不同的session存储方式: @@ -171,7 +171,7 @@ CREATE TABLE session 例如,如果 `session.hash_function=sha256` ,应使用长度为64而不是40的char类型。 -### Flash 数据 +### Flash 数据 Flash数据是一种特别的session数据,它一旦在某个请求中设置后,只会在下次请求中有效,然后该数据就会自动被删除。 常用于实现只需显示给终端用户一次的信息,如用户提交一个表单后显示确认信息。 @@ -220,14 +220,14 @@ $alerts = $session->getFlash('alerts'); 取决于你调用这两个方法的顺序。 -## Cookies +## Cookies Yii使用 [[yii\web\Cookie]]对象来代表每个cookie,[[yii\web\Request]] 和 [[yii\web\Response]] 通过名为'cookies'的属性维护一个cookie集合,前者的cookie 集合代表请求提交的cookies, 后者的cookie集合表示发送给用户的cookies。 -### 读取 Cookies +### 读取 Cookies 当前请求的cookie信息可通过如下代码获取: @@ -254,7 +254,7 @@ if (isset($cookies['language'])) ... ``` -### 发送 Cookies +### 发送 Cookies You can send cookies to end users using the following code: 可使用如下代码发送cookie到终端用户: @@ -284,7 +284,7 @@ unset($cookies['language']); 更多详情可阅读 [httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) for more details. -### Cookie验证 +### Cookie验证 在上两节中,当通过`request` 和 `response` 组件读取和发送cookie时,你会喜欢扩展的cookie验证的保障安全功能,它能 使cookie不被客户端修改。该功能通过给每个cookie签发一个哈希字符串来告知服务端cookie是否在客户端被修改, diff --git a/docs/guide-zh-CN/start-databases.md b/docs/guide-zh-CN/start-databases.md index 113c922a385..13e75a351b4 100644 --- a/docs/guide-zh-CN/start-databases.md +++ b/docs/guide-zh-CN/start-databases.md @@ -13,7 +13,7 @@ 请注意,为了掌握本章你应该具备最基本的数据库知识和使用经验。尤其是应该知道如何创建数据库,如何通过数据库终端执行 SQL 语句。 -准备数据库 +准备数据库 -------------------- 首先创建一个名为 `yii2basic` 的数据库,应用将从这个数据库中读取数据。你可以创建 SQLite,MySQL,PostregSQL,MSSQL 或 Oracle 数据库,Yii 内置多种数据库支持。简单起见,后面的内容将以 MySQL 为例做演示。 @@ -41,7 +41,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); 此时便有了一个名为 `yii2basic` 的数据库,在这个数据库中有一个包含三个字段的数据表 `country`,表中有十行数据。 -配置数据库连接 +配置数据库连接 --------------------------- 开始之前,请确保你已经安装了 PHP [PDO](http://www.php.net/manual/en/book.pdo.php) 扩展和你所使用的数据库的 PDO 驱动(例如 MySQL 的 `pdo_mysql`)。对于使用关系型数据库来讲,这是基本要求。 @@ -67,7 +67,7 @@ return [ > 补充:`config/db.php` 将被包含在应用配置文件 `config/web.php` 中,后者指定了整个[应用](structure-applications.md)如何初始化。请参考[配置](concept-configurations.md)章节了解更多信息。 -创建活动记录 +创建活动记录 ------------------------- 创建一个继承自[活动记录](db-active-record.md)类的类 `Country`,把它放在 `models/Country.php` 文件,去代表和读取 `country` 表的数据。 @@ -110,7 +110,7 @@ $country->save(); > 补充:活动记录是面向对象、功能强大的访问和操作数据库数据的方式。你可以在[活动记录](db-active-record.md)章节了解更多信息。除此之外你还可以使用另一种更原生的被称做[数据访问对象](db-dao)的方法操作数据库数据。 -创建操作 +创建操作 ------------------ 为了向最终用户显示国家数据,你需要创建一个操作。相比之前小节掌握的在 `site` 控制器中创建操作,在这里为所有和国家有关的数据新建一个控制器更加合理。新控制器名为 `CountryController`,并在其中创建一个 `index` 操作,如下: @@ -158,7 +158,7 @@ class CountryController extends Controller 在代码末尾,`index` 操作渲染一个名为 `index` 的视图,并传递国家数据和分页信息进去。 -创建视图 +创建视图 --------------- 在 `views` 目录下先创建一个名为 `country` 的子目录。这个目录存储所有由 `country` 控制器渲染的视图。在 `views/country` 目录下创建一个名为 `index.php` 的视图文件,内容如下: @@ -184,7 +184,7 @@ use yii\widgets\LinkPager; 这个视图包含两部分用以显示国家数据。第一部分遍历国家数据并以无序 HTML 列表渲染出来。第二部分使用 [[yii\widgets\LinkPager]] 去渲染从操作中传来的分页信息。小部件 `LinkPager` 显示一个分页按钮的列表。点击任何一个按钮都会跳转到对应的分页。 -试运行 +试运行 ------------- 浏览器访问下面的 URL 看看能否工作: @@ -207,7 +207,7 @@ http://hostname/index.php?r=country/index&page=2 * 然后小部件 [[yii\widgets\LinkPager|LinkPager]] 使用 [[yii\data\Pagination::createUrl()|Pagination::createUrl()]] 方法生成的 URL 去渲染翻页按钮。URL 中包含必要的参数 `page` 才能查询不同的页面编号。 * 如果你点击按钮 “2”,将会发起一个路由为 `country/index` 的新请求。[[yii\data\Pagination|Pagination]] 接收到 URL 中的 `page` 参数把当前的页码设为 2。新的数据库请求将会以 `LIMIT 5 OFFSET 5` 查询并显示。 -总结 +总结 ------- 本章节中你学到了如何使用数据库。你还学到了如何取出并使用 [[yii\data\Pagination]] 和 [[yii\widgets\LinkPager]] 显示数据。 diff --git a/docs/guide-zh-CN/start-forms.md b/docs/guide-zh-CN/start-forms.md index 26b750967e1..ffc2a1dd201 100644 --- a/docs/guide-zh-CN/start-forms.md +++ b/docs/guide-zh-CN/start-forms.md @@ -12,7 +12,7 @@ * 在[视图](structure-views.md)中生成一个 HTML 表单 -创建模型 +创建模型 ---------------- 模型类 `EntryForm` 代表从用户那请求的数据,该类如下所示并存储在 `models/EntryForm.php` 文件中。请参考[类自动加载](concept-autoloading.md)章节获取更多关于类命名约定的介绍。 @@ -64,7 +64,7 @@ if ($model->validate()) { ``` -创建操作 +创建操作 ------------------ 下面你得在 `site` 控制器中创建一个 `entry` 操作用于新建的模型。操作的创建和使用已经在[说一声你好](start-hello.md)小节中解释了。 @@ -109,7 +109,7 @@ class SiteController extends Controller > 注意:在这个简单例子里我们只是呈现了有效数据的确认页面。实践中你应该考虑使用 [[yii\web\Controller::refresh()|refresh()]] 或 [[yii\web\Controller::redirect()|redirect()]] 去避免[表单重复提交问题](http://en.wikipedia.org/wiki/Post/Redirect/Get)。 -创建视图 +创建视图 -------------- 最后创建两个视图文件 `entry-confirm` 和 `entry`。他们会被刚才创建的 `entry` 操作渲染。 @@ -151,7 +151,7 @@ use yii\widgets\ActiveForm; 视图使用了一个功能强大的[小部件](structure-widgets.md) [[yii\widgets\ActiveForm|ActiveForm]] 去生成 HTML 表单。其中的 `begin()` 和 `end()` 分别用来渲染表单的开始和关闭标签。在这两个方法之间使用了 [[yii\widgets\ActiveForm::field()|field()]] 方法去创建输入框。第一个输入框用于 “name”,第二个输入框用于 “email”。之后使用 [[yii\helpers\Html::submitButton()]] 方法生成提交按钮。 -尝试下 +尝试下 ------------- 用浏览器访问下面的 URL 看它能否工作: @@ -170,7 +170,7 @@ http://hostname/index.php?r=site/entry -### 效果说明 +### 效果说明 你可能会好奇 HTML 表单暗地里是如何工作的呢,看起来它可以为每个输入框显示文字标签,而当你没输入正确的信息时又不需要刷新页面就能给出错误提示,似乎有些神奇。 @@ -190,7 +190,7 @@ http://hostname/index.php?r=site/entry > 补充:Yii 提供了相当多类似的小部件去帮你生成复杂且动态的视图。在后面你还会了解到自己写小部件是多么简单。你可能会把自己的很多视图代码转化成小部件以提高重用,加快开发效率。 -总结 +总结 ------- 本章节指南中你接触了 MVC 设计模式的每个部分。学到了如何创建一个模型代表用户数据并验证它的有效性。 diff --git a/docs/guide-zh-CN/start-gii.md b/docs/guide-zh-CN/start-gii.md index fb2397e252d..ae591159cb1 100644 --- a/docs/guide-zh-CN/start-gii.md +++ b/docs/guide-zh-CN/start-gii.md @@ -11,7 +11,7 @@ * 自定义 Gii 生成的代码 -开始 Gii +开始 Gii ------------ [Gii](tool-gii.md) 是 Yii 中的一个[模块](structure-modules.md)。可以通过配置应用的 [[yii\base\Application::modules|modules]] 属性开启它。通常来讲在 `config/web.php` 文件中会有以下配置代码: @@ -51,7 +51,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -生成活动记录类 +生成活动记录类 --------------------------------- 选择 “Model Generator” (点击 Gii 首页的链接)去生成活动记录类。并像这样填写表单: @@ -72,7 +72,7 @@ http://hostname/index.php?r=gii 接下来你会看到一个包含已生成文件的说明页面。如果生成过程中覆写过文件,还会有一条信息说明代码是重新生成覆盖的。 -生成 CRUD 代码 +生成 CRUD 代码 -------------------- CRUD 代表增,查,改,删操作,这是绝大多数 Web 站点常用的数据处理方式。选择 Gii 中的 “CRUD Generator” (点击 Gii 首页的链接)去创建 CRUD 功能。本例 “country” 中需要这样填写表单: @@ -90,7 +90,7 @@ CRUD 代表增,查,改,删操作,这是绝大多数 Web 站点常用的 如果你之前创建过 `controllers/CountryController.php` 和 `views/country/index.php` 文件(在指南的使用数据库章节),选中 “overwrite” 下的复选框覆写它们(之前的文件没能全部支持 CRUD)。 -试运行 +试运行 ------------- 用浏览器访问下面的 URL 查看生成代码的运行: @@ -116,7 +116,7 @@ http://hostname/index.php?r=country/index > 补充:Gii 被设计成高度可定制和可扩展的代码生成工具。使用它可以大幅提高应用开发速度。请参考 [Gii](tool-gii.md) 章节了解更多内容。 -总结 +总结 ------- 本章学习了如何使用 Gii 去生成为数据表中数据实现完整 CRUD 功能的代码。 diff --git a/docs/guide-zh-CN/start-hello.md b/docs/guide-zh-CN/start-hello.md index 59c25198386..62642483d9c 100644 --- a/docs/guide-zh-CN/start-hello.md +++ b/docs/guide-zh-CN/start-hello.md @@ -13,7 +13,7 @@ 3. 以及一个应用如何分派请求给[操作](structure-controllers.md#creating-actions)。 -创建操作 +创建操作 ------------------ 为了 “Hello”,需要创建一个 `say` [操作](structure-controllers.md#creating-actions),从请求中接收 `message` 参数并显示给最终用户。如果请求没有提供 `message` 参数,操作将显示默认参数 “Hello”。 @@ -49,7 +49,7 @@ class SiteController extends Controller 在操作方法中,[[yii\web\Controller::render()|render()]] 被用来渲染一个名为 `say` 的[视图](structure-views.md)文件。 `message` 参数也被传入视图,这样就可以在里面使用。操作方法会返回渲染结果。结果会被应用接收并显示给最终用户的浏览器(作为整页 HTML 的一部分)。 -创建视图 +创建视图 --------------- [视图](structure-views.md)是你用来生成响应内容的脚本。为了说 “Hello”,你需要创建一个 `say` 视图,以便显示从操作方法中传来的 `message` 参数。 @@ -68,7 +68,7 @@ use yii\helpers\Html; 当然了,你大概会在 `say` 视图里放入更多内容。内容可以由 HTML 标签,纯文本,甚至 PHP 语句组成。实际上 `say` 视图就是一个由 [[yii\web\Controller::render()|render()]] 执行的 PHP 脚本。视图脚本输出的内容将会作为响应结果返回给应用。应用将依次输出结果给最终用户。 -试运行 +试运行 ------------- 创建完操作和视图后,你就可以通过下面的 URL 访问新页面了: @@ -90,7 +90,7 @@ http://hostname/index.php?r=site/say&message=Hello+World > 补充:与操作一样,一个应用中控制器同样有唯一的 ID。控制器 ID 和操作 ID 使用同样的命名规则。控制器的类名源自于控制器 ID,移除了连字符,每个单词首字母大写,并加上 `Controller` 后缀。例子:控制器 ID `post-comment` 相当于控制器类名 `PostCommentController`。 -总结 +总结 ------- 通过本章节你接触了 MVC 设计模式中的控制器和视图部分。创建了一个操作作为控制器的一部分去处理特定请求。然后又创建了一个视图去构造响应内容。在这个小例子中,没有模型调用,唯一涉及到数据的地方是 `message` 参数。 diff --git a/docs/guide-zh-CN/start-installation.md b/docs/guide-zh-CN/start-installation.md index c36345fdc12..7f8577a0567 100644 --- a/docs/guide-zh-CN/start-installation.md +++ b/docs/guide-zh-CN/start-installation.md @@ -6,7 +6,7 @@ > 注意:和 Yii 1 不同,以标准方式安装 Yii 2 时会同时下载并安装框架本身和一个应用程序的基本骨架。 -通过 Composer 安装 +通过 Composer 安装 ----------------------- 如果还没有安装 Composer,你可以按 [getcomposer.org](https://getcomposer.org/download/) 中的方法安装。在 Linux 和 Mac OS X 中可以运行如下命令: @@ -42,7 +42,7 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下 > 注意,Yii 的开发版(dev 版)不应该用于生产环境中,它可能会破坏运行中的代码。 -通过归档文件安装 +通过归档文件安装 ------------------------------- 通过归档文件安装 Yii 包括三个步骤: @@ -57,7 +57,7 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下 ``` -其他安装方式 +其他安装方式 -------------------------- 上文介绍了两种安装 Yii 的方法,安装的同时也会创建一个立即可用的 Web 应用程序。对于小的项目或用于学习上手,这都是一个不错的起点。 @@ -68,7 +68,7 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下 * 如果你要开发一个更复杂的应用,可以更好地适用于团队开发环境的,可以考虑安装[高级应用模版](tutorial-advanced-app.md)。 -验证安装的结果 +验证安装的结果 -------------------------- 安装完成后,就可以使用浏览器通过如下 URL 访问刚安装完的 Yii 应用了: @@ -94,7 +94,7 @@ http://localhost/basic/web/index.php 你需要配置好 PHP 安装环境,使其符合 Yii 的最小需求。主要是需要 PHP 5.4 以上版本。如果应用需要用到数据库,那还要安装 [PDO PHP 扩展](http://www.php.net/manual/zh/pdo.installation.php) 和相应的数据库驱动(例如访问 MySQL 数据库所需的 `pdo_mysql`)。 -配置 Web 服务器 +配置 Web 服务器 ----------------------- >补充:如果你现在只是要试用 Yii 而不是将其部署到生产环境中,本小节可以跳过。 @@ -108,7 +108,7 @@ http://localhost/basic/web/index.php >补充:如果你的应用程序将来要运行在共享虚拟主机环境中,没有修改其 Web 服务器配置的权限,你依然可以通过调整应用的结构来提升安全性。详情请参考[共享主机环境](tutorial-shared-hosting.md) 一章。 -### 推荐使用的 Apache 配置 +### 推荐使用的 Apache 配置 在 Apache 的 `httpd.conf` 文件或在一个虚拟主机配置文件中使用如下配置。注意,你应该将 `path/to/basic/web` 替换为实际的 `basic/web` 目录。 @@ -130,7 +130,7 @@ DocumentRoot "path/to/basic/web" ``` -### 推荐使用的 Nginx 配置 +### 推荐使用的 Nginx 配置 为了使用 [Nginx](http://wiki.nginx.org/),你应该已经将 PHP 安装为 [FPM SAPI](http://php.net/install.fpm) 了。使用如下 Nginx 配置,将 `path/to/basic/web` 替换为实际的 `basic/web` 目录,`mysite.local` 替换为实际的主机名以提供服务。 diff --git a/docs/guide-zh-CN/start-workflow.md b/docs/guide-zh-CN/start-workflow.md index a0857697611..b27c0a3c1ae 100644 --- a/docs/guide-zh-CN/start-workflow.md +++ b/docs/guide-zh-CN/start-workflow.md @@ -5,7 +5,7 @@ > 补充:为简单起见,在整个“入门”板块都假定你已经把 `basic/web` 设为 Web 服务器根目录并配置完毕,你访问应用的地址会是 `http://lostname/index.php` 或类似的。请按需调整 URL。 -功能 +功能 ------------- 一个安装完的基本应用包含四页: @@ -20,7 +20,7 @@ 在浏览器底部可以看到一个工具栏。这是 Yii 提供的很有用的[调试工具](tool-debugger.md),可以记录并显示大量的调试信息,例如日志信息,响应状态,数据库查询等等。 -应用结构 +应用结构 --------------------- 应用中最重要的目录和文件(假设应用根目录是 `basic`): @@ -54,7 +54,7 @@ Yii 实现了[模型-视图-控制器 (MVC)](http://wikipedia.org/wiki/Model-vie 每个应用都有一个入口脚本 `web/index.php`,这是整个应用中唯一可以访问的 PHP 脚本。入口脚本接受一个 Web 请求并创建[应用](structure-application.md)实例去处理它。 [应用](structure-applications.md)在它的[组建](concept-components.md)辅助下解析请求,并分派请求至 MVC 元素。[视图](structure-views.md)使用[小部件](structure-widgets.md)去创建复杂和动态的用户界面。 -请求生命周期 +请求生命周期 ----------------- 以下图表展示了一个应用如何处理请求: diff --git a/docs/guide-zh-CN/structure-application-components.md b/docs/guide-zh-CN/structure-application-components.md index e5142fa9628..211c545e07b 100644 --- a/docs/guide-zh-CN/structure-application-components.md +++ b/docs/guide-zh-CN/structure-application-components.md @@ -44,7 +44,7 @@ 一般情况下可以在需要时再创建本地组件。 -## 引导启动组件 +## 引导启动组件 上面提到一个应用组件只会在第一次访问时实例化,如果处理请求过程没有访问的话就不实例化。 有时你想在每个请求处理过程都实例化某个组件即便它不会被访问, @@ -67,7 +67,7 @@ ``` -## 核心应用组件 +## 核心应用组件 Yii 定义了一组固定ID和默认配置的 *核心* 组件,例如 [[yii\web\Application::request|request]] 组件 用来收集用户请求并解析 [路由](runtime-routing.md); diff --git a/docs/guide-zh-CN/structure-applications.md b/docs/guide-zh-CN/structure-applications.md index 9577af1cb47..dba262b7f7b 100644 --- a/docs/guide-zh-CN/structure-applications.md +++ b/docs/guide-zh-CN/structure-applications.md @@ -10,7 +10,7 @@ Yii有两种应用主体: [[yii\web\Application|网页应用主体]] and [[yii\console\Application|控制台应用主体]], 如名称所示,前者主要处理网页请求,后者处理控制台请求。 -## 应用主体配置 +## 应用主体配置 如下所示,当 [入口脚本](structure-entry-scripts.md) 创建了一个应用主体,它会加载一个 [配置](concept-configurations.md) 文件并传给应用主体。 @@ -28,24 +28,24 @@ $config = require(__DIR__ . '/../config/web.php'); 类似其他 [配置](concept-configurations.md) 文件, 应用主体配置文件标明如何设置应用对象初始属性。 由于应用主体配置比较复杂,一般保存在多个类似如上web.php的 [配置文件](concept-configurations.md#configuration-files) 当中。 -## 应用主体属性 +## 应用主体属性 应用主体配置文件中有许多重要的属性要配置,这些属性指定应用主体的运行环境。 比如,应用主体需要知道如何加载 [控制器](structure-controllers.md) ,临时文件保存到哪儿等等。 以下我们简述这些属性。 -### 必要属性 +### 必要属性 在一个应用中,至少要配置2个属性: [[yii\base\Application::id|id]] 和 [[yii\base\Application::basePath|basePath]]。 -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] [[yii\base\Application::id|id]] 属性用来区分其他应用的唯一标识ID。主要给程序使用。 为了方便协作,最好使用数字作为应用主体ID,但不强制要求为数字。 -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] [[yii\base\Application::basePath|basePath]] 指定该应用的根目录。根目录包含应用系统所有受保护的源代码。 @@ -58,12 +58,12 @@ $config = require(__DIR__ . '/../config/web.php'); 派生路径可以通过这个别名组成(如`@app/runtime`代表runtime的路径)。 -### 重要属性 +### 重要属性 本小节所描述的属性通常需要设置,因为不同的应用属性不同。 -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] 该属性允许你用一个数组定义多个 [别名](concept-aliases.md)。数组的key为别名名称,值为对应的路径。例如: @@ -79,7 +79,7 @@ $config = require(__DIR__ . '/../config/web.php'); 使用这个属性来定义别名,代替 [[Yii::setAlias()]] 方法来设置。 -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] 这个属性很实用,它允许你用数组指定启动阶段[[yii\base\Application::bootstrap()|bootstrapping process]]需要运行的组件。 比如,如果你希望一个 [模块](structure-modules.md) 自定义 [URL 规则](runtime-url-handling.md),你可以将模块ID加入到bootstrap数组中。 @@ -146,7 +146,7 @@ if (YII_ENV_DEV) { > 注: 启动太多的组件会降低系统性能,因为每次请求都需要重新运行启动组件,因此谨慎配置启动组件。 -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] 该属性仅 [[yii\web\Application|Web applications]] 网页应用支持。 它指定一个要处理所有用户请求的 [控制器方法](structure-controllers.md),通常在维护模式下使用,同一个方法处理所有用户请求。 @@ -164,7 +164,7 @@ if (YII_ENV_DEV) { ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] 这是最重要的属性,它允许你注册多个在其他地方使用的[应用组件](#structure-application-components.md). 例如 @@ -189,7 +189,7 @@ if (YII_ENV_DEV) { 详情请阅读 [应用组件](structure-application-components.md) 一节. -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] 该属性允许你指定一个控制器ID到任意控制器类。Yii遵循一个默认的 [规则](#controllerNamespace)指定控制器ID到任意控制器类(如`post`对应`app\controllers\PostController`)。 通过配置这个属性,可以打破这个默认规则,在下面的例子中,`account`对应到`app\controllers\UserController`, @@ -212,7 +212,7 @@ if (YII_ENV_DEV) { 数组的键代表控制器ID,数组的值代表对应的类名。 -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] 该属性指定控制器类默认的命名空间,默认为`app\controllers`。比如控制器ID为 `post` 默认对应 `PostController` (不带命名空间), 类全名为 `app\controllers\PostController`。 @@ -226,7 +226,7 @@ if (YII_ENV_DEV) { 如果你想打破上述的规则,可以配置 [controllerMap](#controllerMap) 属性。 -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] 该属性指定应用展示给终端用户的语言,默认为 `en` 标识英文。如果需要之前其他语言可以配置该属性。 @@ -238,7 +238,7 @@ if (YII_ENV_DEV) { 该属性的更多信息可参考 [国际化](tutorial-i18n.md) 一节. -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] 该属性指定应用所包含的 [模块](structure-modules.md)。 @@ -262,7 +262,7 @@ if (YII_ENV_DEV) { 更多详情请参考 [模块](structure-modules.md) 一节。 -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] 该属性指定你可能想展示给终端用户的应用名称,不同于需要唯一性的 [[yii\base\Application::id|id]] 属性, 该属性可以不唯一,该属性用于显示应用的用途。 @@ -270,7 +270,7 @@ if (YII_ENV_DEV) { 如果其他地方的代码没有用到,可以不配置该属性。 -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] 该属性为一个数组,指定可以全局访问的参数,代替程序中硬编码的数字和字符,应用中的参数定义到一个单独的文件并随时可以访问是一个好习惯。 例如用参数定义缩略图的长宽如下: @@ -293,7 +293,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 以后想修改缩略图长宽,只需要修改该参数而不需要相关的代码。 -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] 该属性指定应用代码的语言,默认为 `'en-US'` 标识英文(美国),如果应用不是英文请修改该属性。 @@ -303,7 +303,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 该属性的更多信息可参考 [国际化](tutorial-i18n.md) 一节. -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] 该属性提供一种方式修改PHP运行环境中的默认时区,配置该属性本质上就是调用PHP函数 [date_default_timezone_set()](http://php.net/manual/en/function.date-default-timezone-set.php),例如: @@ -315,22 +315,22 @@ $width = \Yii::$app->params['thumbnail.size'][0]; ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] 该属性指定应用的版本,默认为`'1.0'`,其他代码不使用的话可以不配置。 -### 实用属性 +### 实用属性 本小节描述的属性不经常设置,通常使用系统默认值。如果你想改变默认值,可以配置这些属性。 -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] 该属性指定应用使用的字符集,默认值为 `'UTF-8'`,绝大部分应用都在使用,除非已有的系统大量使用非unicode数据才需要更改该属性。 -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] 该属性指定未配置的请求的响应 [路由](runtime-routing.md) 规则,路由规则可能包含模块ID,控制器ID,动作ID。 例如`help`, `post/create`, `admin/post/create`,如果动作ID没有指定,会使用[[yii\base\Controller::defaultAction]]中指定的默认值。 @@ -343,7 +343,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 因此,如果执行的命令不带参数,默认会显示帮助信息。 -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] 该属性用数组列表指定应用安装和使用的 [扩展](structure-extensions.md),默认使用`@vendor/yiisoft/extensions.php`文件返回的数组。 当你使用 [Composer](http://getcomposer.org) 安装扩展,`extensions.php` 会被自动生成和维护更新。 @@ -375,7 +375,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 扩展也可以定义 [别名](concept-aliases.md) -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] 该属性指定渲染 [视图](structure-views.md) 默认使用的布局名字,默认值为 `'main'` 对应[布局路径](#layoutPath)下的 `main.php` 文件, 如果 [布局路径](#layoutPath) 和 [视图路径](#viewPath) 都是默认值,默认布局文件可以使用路径别名`@app/views/layouts/main.php` @@ -383,7 +383,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 如果不想设置默认布局文件,可以设置该属性为 `false`,这种做法比较罕见。 -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] 该属性指定查找布局文件的路径,默认值为 [视图路径](#viewPath) 下的 `layouts` 子目录。 如果 [视图路径](#viewPath) 使用默认值,默认的布局路径别名为`@app/views/layouts`。 @@ -391,7 +391,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 该属性需要配置成一个目录或 路径 [别名](concept-aliases.md)。 -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] 该属性指定临时文件如日志文件、缓存文件等保存路径,默认值为带别名的 `@app/runtime`。 @@ -401,12 +401,12 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 为了简化访问该路径,Yii预定义别名 `@runtime` 代表该路径。 -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] 该路径指定视图文件的根目录,默认值为带别名的 `@app/views`,可以配置它为一个目录或者路径 [别名](concept-aliases.md). -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] 该属性指定 [Composer](http://getcomposer.org) 管理的供应商路径,该路径包含应用使用的包括Yii框架在内的所有第三方库。 默认值为带别名的 `@app/vendor` 。 @@ -416,12 +416,12 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 为了简化访问该路径,Yii预定义别名 `@vendor` 代表该路径。 -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] 该属性仅 [[yii\console\Application|console applications]] 控制台应用支持, 用来指定是否启用Yii中的核心命令,默认值为 `true`。 -## 应用事件 +## 应用事件 应用在处理请求过程中会触发事件,可以在配置文件配置事件处理代码,如下所示: @@ -443,7 +443,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] 该事件在应用处理请求*before*之前,实际的事件名为 `beforeRequest`。 @@ -451,7 +451,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 例如在事件处理中根据某些参数动态设置[[yii\base\Application::language]]语言属性。 -### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] 该事件在应用处理请求*after*之后但在返回响应*before*之前触发,实际的事件名为`afterRequest`。 @@ -460,7 +460,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 注意 [[yii\web\Response|response]] 组件在发送响应给终端用户时也会触发一些事件,这些事件都在本事件*after*之后触发。 -### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] 该事件在每个 [控制器动作](structure-controllers.md) 运行*before*之前会被触发,实际的事件名为 `beforeAction`. @@ -483,7 +483,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 任何一个事件处理中设置 [[yii\base\ActionEvent::isValid]] 设置为 `false` 会停止触发后面的事件。 -### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] 该事件在每个 [控制器动作](structure-controllers.md) 运行*after*之后会被触发,实际的事件名为 `afterAction`. @@ -505,7 +505,7 @@ $width = \Yii::$app->params['thumbnail.size'][0]; 这些对象的触发顺序和 `beforeAction` 相反,也就是说,控制器最先触发,然后是模块(如果有模块),最后为应用主体。 -## 应用主体生命周期 +## 应用主体生命周期 当运行 [入口脚本](structure-entry-scripts.md) 处理请求时,应用主体会经历以下生命周期: diff --git a/docs/guide-zh-CN/structure-assets.md b/docs/guide-zh-CN/structure-assets.md index 431d65a9b89..176324ea313 100644 --- a/docs/guide-zh-CN/structure-assets.md +++ b/docs/guide-zh-CN/structure-assets.md @@ -9,13 +9,13 @@ Yii中的资源是和Web页面相关的文件,可为CSS文件,JavaScript文 当你升级小部件时,它会自动使用新版本的资源文件,在本教程中,我们会详述Yii提供的强大的资源管理功能。 -## 资源包 +## 资源包 Yii在*资源包*中管理资源,资源包简单的说就是放在一个目录下的资源集合, 当在[视图](structure-views.md)中注册一个资源包,在渲染Web页面时会包含包中的CSS和JavaScript文件。 -## 定义资源包 +## 定义资源包 资源包指定为继承[[yii\web\AssetBundle]]的PHP类,包名为可[自动加载](concept-autoloading.md)的PHP类名, 在资源包类中,要指定资源所在位置,包含哪些CSS和JavaScript文件以及和其他包的依赖关系。 @@ -79,7 +79,7 @@ class AppAsset extends AssetBundle 指定传递到该方法的选项,仅在指定了[[yii\web\AssetBundle::sourcePath|sourcePath]]属性时使用。 -### 资源位置 +### 资源位置 资源根据它们的位置可以分为: @@ -103,7 +103,7 @@ class AppAsset extends AssetBundle 可能会被删除。 -### 资源依赖 +### 资源依赖 当Web页面包含多个CSS或JavaScript文件时,它们有一定的先后顺序以避免属性覆盖, 例如,Web页面在使用jQuery UI小部件前必须确保jQuery JavaScript文件已经被包含了, @@ -116,7 +116,7 @@ class AppAsset extends AssetBundle 资源依赖关系是可传递,也就是人说A依赖B,B依赖C,那么A也依赖C。 -### 资源选项 +### 资源选项 可指定[[yii\web\AssetBundle::cssOptions|cssOptions]] 和 [[yii\web\AssetBundle::jsOptions|jsOptions]] 属性来自定义页面包含CSS和JavaScript文件的方式, @@ -153,7 +153,7 @@ public $jsOptions = ['position' => \yii\web\View::POS_HEAD]; ``` -### Bower 和 NPM 资源 +### Bower 和 NPM 资源 大多数 JavaScript/CSS 包通过[Bower](http://bower.io/) 和/或 [NPM](https://www.npmjs.org/)管理, 如果你的应用或扩展使用这些包,推荐你遵循以下步骤来管理库中的资源: @@ -168,7 +168,7 @@ public $jsOptions = ['position' => \yii\web\View::POS_HEAD]; [[yii\web\AssetBundle::sourcePath|sourcePath]]属性值,例如,[[yii\web\JqueryAsset]]使用 `@bower/jquery/dist` 而不是 `@bower/jquery`。 -## 使用资源包 +## 使用资源包 为使用资源包,在[视图](structure-views.md)中调用[[yii\web\AssetBundle::register()]]方法先注册资源, 例如,在视图模板可使用如下代码注册资源包: @@ -186,7 +186,7 @@ AppAsset::register($this); // $this 代表视图对象 这些标签的先后顺序取决于资源包的依赖关系以及在 [[yii\web\AssetBundle::css]]和[[yii\web\AssetBundle::js]] 的列出来的前后顺序。 -### 自定义资源包 +### 自定义资源包 Yii通过名为 `assetManager`的应用组件实现[[yii\web\AssetManager] 来管理应用组件, 通过配置[[yii\web\AssetManager::bundles]] 属性,可以自定义资源包的行为, @@ -243,7 +243,7 @@ return [ 可设置[[yii\web\AssetManager::bundles]]为`false`禁用 *所有* 的资源包。 -### 资源部署 +### 资源部署 有时你想"修复" 多个资源包中资源文件的错误/不兼容,例如包A使用1.11.1版本的`jquery.min.js`, 包B使用2.1.1版本的`jquery.js`,可自定义每个包来解决这个问题,更好的方式是使用*资源部署*特性来部署不正确的资源为想要的, @@ -270,7 +270,7 @@ return [ > 注意: 只有相对相对路径指定的资源对应到资源部署,替换的资源路径可以为绝对路径,也可为和[[yii\web\AssetManager::basePath]]相关的路径。 -### 资源发布 +### 资源发布 如前所述,如果资源包放在Web不能访问的目录,当视图注册资源时资源会被拷贝到一个Web可访问的目录中, 这个过程称为*资源发布*,[[yii\web\AssetManager|asset manager]]会自动处理该过程。 @@ -295,7 +295,7 @@ return [ 使用以上配置,资源管理器会创建一个符号链接到要发布的资源包源路径,这比拷贝文件方式快并能确保发布的资源一直为最新的。 -## 常用资源包 +## 常用资源包 Yii框架定义许多资源包,如下资源包是最常用,可在你的应用或扩展代码中引用它们。 @@ -310,7 +310,7 @@ Yii框架定义许多资源包,如下资源包是最常用,可在你的应 如果这些包的默认配置不能满足你的需求,可以自定义配置,详情参考[自定义资源包](#customizing-asset-bundles)。 -## 资源转换 +## 资源转换 除了直接编写CSS 和/或 JavaScript代码,开发人员经常使用扩展语法来编写,再使用特殊的工具将它们转换成CSS/Javascript。 例如,对于CSS代码可使用[LESS](http://lesscss.org/) 或 [SCSS](http://sass-lang.com/), @@ -375,7 +375,7 @@ return [ 来监控并自动转换扩展语法资源,此时,应使用资源包中编译后的CSS/Javascript文件而不是原始文件。 -## 合并和压缩资源 +## 合并和压缩资源 一个Web页面可以包含很多CSS 和/或 JavaScript 文件,为减少HTTP 请求和这些下载文件的大小, 通常的方式是在页面中合并并压缩多个CSS/JavaScript 文件为一个或很少的几个文件,并使用压缩后的文件而不是原始文件。 @@ -396,7 +396,7 @@ return [ 而不是原始文件。 -### 示例 +### 示例 使用一个示例来解释以上这种方式: @@ -458,7 +458,7 @@ return [ 如上所示,在产品上线模式下资源包数组存储在`assets-prod.php`文件中,不是产品上线模式存储在`assets-dev.php`文件中。 -### 使用 `asset` 命令 +### 使用 `asset` 命令 Yii提供一个名为`asset`控制台命令来使上述操作自动处理。 diff --git a/docs/guide-zh-CN/structure-controllers.md b/docs/guide-zh-CN/structure-controllers.md index 29c28b18e4c..41489c82e11 100644 --- a/docs/guide-zh-CN/structure-controllers.md +++ b/docs/guide-zh-CN/structure-controllers.md @@ -7,7 +7,7 @@ 传送模型结果到[视图](structure-views.md),最后生成输出响应信息。 -## 操作 +## 操作 控制器由 *操作* 组成,它是执行终端用户请求的最基础的单元,一个控制器可有一个或多个操作。 @@ -57,7 +57,7 @@ class PostController extends Controller 然后保存模型,如果两者都成功,会跳转到ID为新创建的模型的`view`操作,否则显示提供用户输入的`create`视图。 -## 路由 +## 路由 终端用户通过所谓的*路由*寻找到操作,路由是包含以下部分的字符串: @@ -81,7 +81,7 @@ ModuleID/ControllerID/ActionID 更多关于处理路由的详情请参阅 [路由](runtime-routing.md) 一节。 -## 创建控制器 +## 创建控制器 在[[yii\web\Application|Web applications]]网页应用中,控制器应继承[[yii\web\Controller]] 或它的子类。 同理在[[yii\console\Application|console applications]]控制台应用中,控制器继承[[yii\console\Controller]] 或它的子类。 @@ -98,7 +98,7 @@ class SiteController extends Controller ``` -### 控制器ID +### 控制器ID 通常情况下,控制器用来处理请求有关的资源类型,因此控制器ID通常为和资源有关的名词。 例如使用`article`作为处理文章的控制器ID。 @@ -111,7 +111,7 @@ class SiteController extends Controller 子目录前缀可为英文大小写字母、数字、下划线、正斜杠,其中正斜杠用来区分多级子目录(如 `panels/admin`)。 -### 控制器类命名 +### 控制器类命名 控制器ID遵循以下规则衍生控制器类名: @@ -136,7 +136,7 @@ class SiteController extends Controller 在你不想用 [模块](structure-modules.md) 的情况下给控制器分类,这种方式很有用。 -### 控制器部署 +### 控制器部署 可通过配置 [[yii\base\Application::controllerMap|controller map]] 来强制上述的控制器ID和类名对应, 通常用在使用第三方不能掌控类名的控制器上。 @@ -160,7 +160,7 @@ class SiteController extends Controller ``` -### 默认控制器 +### 默认控制器 每个应用有一个由[[yii\base\Application::defaultRoute]]属性指定的默认控制器; 当请求没有指定 [路由](#ids-routes),该属性值作为路由使用。 @@ -177,7 +177,7 @@ class SiteController extends Controller ``` -## 创建操作 +## 创建操作 创建操作可简单地在控制器类中定义所谓的 *操作方法* 来完成,操作方法必须是以`action`开头的公有方法。 操作方法的返回值会作为响应数据发送给终端用户,如下代码定义了两个操作 `index` 和 `hello-world`: @@ -202,7 +202,7 @@ class SiteController extends Controller ``` -### 操作ID +### 操作ID 操作通常是用来执行资源的特定操作,因此,操作ID通常为动词,如`view`, `update`等。 @@ -215,7 +215,7 @@ class SiteController extends Controller 独立操作相反,主要用于多个控制器重用,或重构为[扩展](structure-extensions.md)。 -### 内联操作 +### 内联操作 内联操作指的是根据我们刚描述的操作方法。 @@ -235,7 +235,7 @@ class SiteController extends Controller 或者你想重新分配一个操作,需要考虑定义它为*独立操作*。 -### 独立操作 +### 独立操作 独立操作通过继承[[yii\base\Action]]或它的子类来定义。 例如Yii发布的[[yii\web\ViewAction]]和[[yii\web\ErrorAction]]都是独立操作。 @@ -281,7 +281,7 @@ class HelloWorldAction extends Action ``` -### 操作结果 +### 操作结果 操作方法或独立操作的`run()`方法的返回值非常重要,它表示对应操作结果。 @@ -304,7 +304,7 @@ public function actionForward() ``` -### 操作参数 +### 操作参数 内联操作的操作方法和独立操作的 `run()` 方法可以带参数,称为*操作参数*。 参数值从请求中获取,对于[[yii\web\Application|Web applications]]网页应用, @@ -352,7 +352,7 @@ public function actionView(array $id, $version = null) 上述例子主要描述网页应用的操作参数,对于控制台应用,更多详情请参阅[控制台命令](tutorial-console.md)。 -### 默认操作 +### 默认操作 每个控制器都有一个由 [[yii\base\Controller::defaultAction]] 属性指定的默认操作, 当[路由](#ids-routes) 只包含控制器ID,会使用所请求的控制器的默认操作。 @@ -376,7 +376,7 @@ class SiteController extends Controller ``` -## 控制器生命周期 +## 控制器生命周期 处理一个请求时,[应用主体](structure-applications.md) 会根据请求[路由](#routes)创建一个控制器,控制器经过以下生命周期来完成请求: @@ -397,7 +397,7 @@ class SiteController extends Controller 6. 应用主体获取操作结果并赋值给[响应](runtime-responses.md). -## 最佳实践 +## 最佳实践 在设计良好的应用中,控制器很精练,包含的操作代码简短; 如果你的控制器很复杂,通常意味着需要重构,转移一些代码到其他类中。 diff --git a/docs/guide-zh-CN/structure-entry-scripts.md b/docs/guide-zh-CN/structure-entry-scripts.md index 2992ccd7436..7c623b03843 100644 --- a/docs/guide-zh-CN/structure-entry-scripts.md +++ b/docs/guide-zh-CN/structure-entry-scripts.md @@ -17,7 +17,7 @@ Web 应用的入口脚本必须放在终端用户能够访问的目录下,通 * 调用 [[yii\base\Application::run()]] 来处理请求。 -## Web 应用 +## Web 应用 以下是[基础应用模版](start-installation.md)入口脚本的代码: @@ -41,7 +41,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## 控制台应用 +## 控制台应用 以下是一个控制台应用的入口脚本: @@ -77,7 +77,7 @@ exit($exitCode); ``` -## 定义常量 +## 定义常量 入口脚本是定义全局常量的最好地方,Yii 支持以下三个常量: diff --git a/docs/guide-zh-CN/structure-extensions.md b/docs/guide-zh-CN/structure-extensions.md index b0d472af804..54d924a5339 100644 --- a/docs/guide-zh-CN/structure-extensions.md +++ b/docs/guide-zh-CN/structure-extensions.md @@ -11,7 +11,7 @@ other people your great work. that can be used without Yii, we will refer to them using the term "package" or "library". -## Using Extensions +## Using Extensions To use an extension, you need to install it first. Most extensions are distributed as [Composer](https://getcomposer.org/) packages which can be installed by taking the following two simple steps: @@ -66,7 +66,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) > Info: Extension classes are autoloaded by the [Yii class autoloader](concept-autoloading.md). -### Installing Extensions Manually +### Installing Extensions Manually In some rare occasions, you may want to install some or all extensions manually, rather than relying on Composer. To do so, you should @@ -90,7 +90,7 @@ are under the `myext` namespace, then you can include the following code in your ``` -## Creating Extensions +## Creating Extensions You may consider creating an extension when you feel the need to share with other people your great code. An extension can contain any code you like, such as a helper class, a widget, a module, etc. @@ -108,7 +108,7 @@ Below are the basic steps you may follow to create an extension as a Composer pa other users can find and install your extension using Composer. -### `composer.json` +### `composer.json` Each Composer package must have a `composer.json` file in its root directory. The file contains the metadata about the package. You may find complete specification about this file in the [Composer Manual](https://getcomposer.org/doc/01-basic-usage.md#composer-json-project-setup). @@ -155,7 +155,7 @@ The following example shows the `composer.json` file for the `yiisoft/yii2-imagi ``` -#### Package Name +#### Package Name Each Composer package should have a package name which uniquely identifies the package among all others. The format of package names is `vendorName/projectName`. For example, in the package name `yiisoft/yii2-imagine`, @@ -167,7 +167,7 @@ We recommend you prefix `yii2-` to the project name for packages representing Yi `myname/yii2-mywidget`. This will allow users to more easily tell whether a package is a Yii 2 extension. -#### Package Type +#### Package Type It is important that you specify the package type of your extension as `yii2-extension` so that the package can be recognized as a Yii extension when being installed. @@ -177,7 +177,7 @@ will be automatically updated to include the information about the new extension can know which extensions are installed (the information can be accessed via [[yii\base\Application::extensions]]. -#### Dependencies +#### Dependencies Your extension depends on Yii (of course). So you should list it (`yiisoft/yii2`) in the `require` entry in `composer.json`. If your extension also depends on other extensions or third-party libraries, you should list them as well. @@ -207,7 +207,7 @@ These two directories can also be referred to using the shorter aliases `@bower/ For more details about asset management, please refer to the [Assets](structure-assets.md#bower-npm-assets) section. -#### Class Autoloading +#### Class Autoloading In order for your classes to be autoloaded by the Yii class autoloader or the Composer class autoloader, you should specify the `autoload` entry in the `composer.json` file, like shown below: @@ -231,13 +231,13 @@ an [alias](concept-aliases.md#extension-aliases) that refers to the directory co For example, the above `autoload` declaration will correspond to an alias named `@yii/imagine`. -### Recommended Practices +### Recommended Practices Because extensions are meant to be used by other people, you often need to take extra development effort. Below we introduce some common and recommended practices in creating high quality extensions. -#### Namespaces +#### Namespaces To avoid name collisions and make the classes in your extension autoloadable, you should use namespaces and name the classes in your extension by following the [PSR-4 standard](http://www.php-fig.org/psr/psr-4/) or @@ -250,7 +250,7 @@ extension, we use `yii\imagine` as the namespace its classes. Do not use `yii`, `yii2` or `yiisoft` as vendor name. These names are reserved for use by the Yii core code. -#### Bootstrapping Classes +#### Bootstrapping Classes Sometimes, you may want your extension to execute some code during the [bootstrapping process](runtime-bootstrapping.md) stage of an application. For example, your extension may want to respond to the application's `beginRequest` event @@ -294,7 +294,7 @@ and call its [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] method dur every request. -#### Working with Databases +#### Working with Databases Your extension may need to access databases. Do not assume that the applications that use your extension will always use `Yii::$db` as the DB connection. Instead, you should declare a `db` property for the classes that require DB access. @@ -308,7 +308,7 @@ If your extension needs to create specific DB tables or make changes to DB schem - avoid using [Active Record](db-active-record.md) in the migrations. -#### Using Assets +#### Using Assets If your extension is a widget or a module, chances are that it may require some [assets](structure-assets.md) to work. For example, a module may display some pages which contain images, JavaScript, and CSS. Because the files of an @@ -323,7 +323,7 @@ We recommend you use the second approach so that your extension can be more easi Please refer to the [Assets](structure-assets.md) section for more details about how to work with assets in general. -#### Internationalization and Localization +#### Internationalization and Localization Your extension may be used by applications supporting different languages! Therefore, if your extension displays content to end users, you should try to [internationalize and localize](tutorial-i18n.md) it. In particular, @@ -337,7 +337,7 @@ content to end users, you should try to [internationalize and localize](tutorial For more details, please refer to the [Internationalization](tutorial-i18n.md) section. -#### Testing +#### Testing You want your extension to run flawlessly without bringing problems to other people. To reach this goal, you should test your extension before releasing it to public. @@ -348,13 +348,13 @@ everything is in good shape. Yii provides testing support, which can help you to acceptance tests and functionality tests. For more details, please refer to the [Testing](test-overview.md) section. -#### Versioning +#### Versioning You should give each release of your extension a version number (e.g. `1.0.1`). We recommend you follow the [semantic versioning](http://semver.org) practice when determining what version numbers should be used. -#### Releasing +#### Releasing To let other people know your extension, you need to release it to public. @@ -386,7 +386,7 @@ help other people learn about and use your extension: the [core framework code style](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style). -## Core Extensions +## Core Extensions Yii provides the following core extensions that are developed and maintained by the Yii developer team. They are all registered on [Packagist](https://packagist.org/) and can be easily installed as described in the diff --git a/docs/guide-zh-CN/structure-filters.md b/docs/guide-zh-CN/structure-filters.md index 4a6354409fc..5c327a1fe79 100644 --- a/docs/guide-zh-CN/structure-filters.md +++ b/docs/guide-zh-CN/structure-filters.md @@ -8,7 +8,7 @@ 过滤器可包含 预过滤(过滤逻辑在动作*之前*) 或 后过滤(过滤逻辑在动作*之后*),也可同时包含两者。 -## 使用过滤器 +## 使用过滤器 过滤器本质上是一类特殊的 [行为](concept-behaviors.md),所以使用过滤器和 [使用 行为](concept-behaviors.md#attaching-behaviors)一样。 可以在控制器类中覆盖它的 [[yii\base\Controller::behaviors()|behaviors()]] 方法来申明过滤器,如下所示: @@ -55,7 +55,7 @@ public function behaviors() - 倒序执行应用主体中`behaviors()`列出的过滤器。 -## 创建过滤器 +## 创建过滤器 继承 [[yii\base\ActionFilter]] 类并覆盖 [[yii\base\ActionFilter::beforeAction()|beforeAction()]] 和/或 [[yii\base\ActionFilter::afterAction()|afterAction()]] @@ -91,12 +91,12 @@ class ActionTimeFilter extends ActionFilter ``` -## 核心过滤器 +## 核心过滤器 Yii提供了一组常用过滤器,在`yii\filters`命名空间下,接下来我们简要介绍这些过滤器。 -### [[yii\filters\AccessControl|AccessControl]] +### [[yii\filters\AccessControl|AccessControl]] AccessControl提供基于[[yii\filters\AccessControl::rules|rules]]规则的访问控制。 特别是在动作执行之前,访问控制会检测所有规则并找到第一个符合上下文的变量(比如用户IP地址、登录状态等等)的规则, @@ -129,7 +129,7 @@ public function behaviors() 更多关于访问控制的详情请参阅 [授权](security-authorization.md) 一节。 -### 认证方法过滤器 +### 认证方法过滤器 认证方法过滤器通过[HTTP Basic Auth](http://en.wikipedia.org/wiki/Basic_access_authentication)或[OAuth 2](http://oauth.net/2/) 来认证一个用户,认证方法过滤器类在 `yii\filters\auth` 命名空间下。 @@ -154,7 +154,7 @@ public function behaviors() 认证方法过滤器通常在实现RESTful API中使用,更多关于访问控制的详情请参阅 RESTful [认证](rest-authentication.md) 一节。 -### [[yii\filters\ContentNegotiator|ContentNegotiator]] +### [[yii\filters\ContentNegotiator|ContentNegotiator]] ContentNegotiator支持响应内容格式处理和语言处理。 通过检查 `GET` 参数和 `Accept` HTTP头部来决定响应内容格式和语言。 @@ -212,7 +212,7 @@ use yii\web\Response; -### [[yii\filters\HttpCache|HttpCache]] +### [[yii\filters\HttpCache|HttpCache]] HttpCache利用`Last-Modified` 和 `Etag` HTTP头实现客户端缓存。例如: @@ -237,7 +237,7 @@ public function behaviors() 更多关于使用HttpCache详情请参阅 [HTTP 缓存](caching-http.md) 一节。 -### [[yii\filters\PageCache|PageCache]] +### [[yii\filters\PageCache|PageCache]] PageCache实现服务器端整个页面的缓存。如下示例所示,PageCache应用在`index`动作, 缓存整个页面60秒或`post`表的记录数发生变化。它也会根据不同应用语言保存不同的页面版本。 @@ -268,13 +268,13 @@ public function behaviors() 更多关于使用PageCache详情请参阅 [页面缓存](caching-page.md) 一节。 -### [[yii\filters\RateLimiter|RateLimiter]] +### [[yii\filters\RateLimiter|RateLimiter]] RateLimiter 根据 [漏桶算法](http://en.wikipedia.org/wiki/Leaky_bucket) 来实现速率限制。 主要用在实现RESTful APIs,更多关于该过滤器详情请参阅 [Rate Limiting](rest-rate-limiting.md) 一节。 -### [[yii\filters\VerbFilter|VerbFilter]] +### [[yii\filters\VerbFilter|VerbFilter]] VerbFilter检查请求动作的HTTP请求方式是否允许执行,如果不允许,会抛出HTTP 405异常。 如下示例,VerbFilter指定CRUD动作所允许的请求方式。 @@ -299,7 +299,7 @@ public function behaviors() } ``` -### [[yii\filters\Cors|Cors]] +### [[yii\filters\Cors|Cors]] 跨域资源共享 [CORS](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) 机制允许一个网页的许多资源(例如字体、JavaScript等) 这些资源可以通过其他域名访问获取。 diff --git a/docs/guide-zh-CN/structure-models.md b/docs/guide-zh-CN/structure-models.md index 386467041e2..96aced901ff 100644 --- a/docs/guide-zh-CN/structure-models.md +++ b/docs/guide-zh-CN/structure-models.md @@ -18,7 +18,7 @@ > 补充:模型并不强制一定要继承[[yii\base\Model]],但是由于很多组件支持[[yii\base\Model]],最好使用它做为模型基类。 -## 属性 +## 属性 模型通过 *属性* 来代表业务数据,每个属性像是模型的公有可访问属性, [[yii\base\Model::attributes()]] 指定模型所拥有的属性。 @@ -50,7 +50,7 @@ foreach ($model as $name => $value) { ``` -### 定义属性 +### 定义属性 默认情况下你的模型类直接从[[yii\base\Model]]继承,所有 *non-static public非静态公有* 成员变量都是属性。 例如,下述`ContactForm` 模型类有四个属性`name`, `email`, `subject` and `body`, @@ -76,7 +76,7 @@ class ContactForm extends Model 注意可能需要覆盖魔术方法如`__get()`, `__set()`使属性像普通对象属性被访问。 -### 属性标签 +### 属性标签 当属性显示或获取输入时,经常要显示属性相关标签,例如假定一个属性名为`firstName`, 在某些地方如表单输入或错误信息处,你可能想显示对终端用户来说更友好的 `First Name` 标签。 @@ -141,7 +141,7 @@ public function attributeLabels() > 补充:属性标签是 [视图](structure-views.md)一部分,但是在模型中申明标签通常非常方便,并可行程非常简洁可重用代码。 -## 场景 +## 场景 模型可能在多个 *场景* 下使用,例如 `User` 模块可能会在收集用户登录输入,也可能会在用户注册时使用。 在不同的场景下,模型可能会使用不同的业务规则和逻辑,例如 `email` 属性在注册时强制要求有,但在登陆时不需要。 @@ -210,7 +210,7 @@ class User extends ActiveRecord 你也可以用于其他目的,例如可基于不同的场景定义不同的 [属性标签](#attribute-labels)。 -## 验证规则 +## 验证规则 当模型接收到终端用户输入的数据,数据应当满足某种规则(称为 *验证规则*, 也称为 *业务规则*)。 例如假定`ContactForm`模型,你可能想确保所有属性不为空且 `email` 属性包含一个有效的邮箱地址, @@ -275,7 +275,7 @@ public function rules() 一个属性只会属于`scenarios()`中定义的活动属性且在`rules()`申明对应一条或多条活动规则的情况下被验证。 -## 块赋值 +## 块赋值 块赋值只用一行代码将用户所有输入填充到一个模型,非常方便, 它直接将输入数据对应填充到 [[yii\base\Model::attributes]] 属性。 @@ -297,7 +297,7 @@ $model->body = isset($data['body']) ? $data['body'] : null; ``` -### 安全属性 +### 安全属性 块赋值只应用在模型当前[[yii\base\Model::scenario|scenario]]场景[[yii\base\Model::scenarios()]]方法 列出的称之为 *安全属性* 的属性上,例如,如果`User`模型申明以下场景, @@ -333,7 +333,7 @@ public function rules() ``` -### 非安全属性 +### 非安全属性 如上所述,[[yii\base\Model::scenarios()]] 方法提供两个用处:定义哪些属性应被验证,定义哪些属性安全。 在某些情况下,你可能想验证一个属性但不想让他是安全的,可在`scenarios()`方法中属性名加一个惊叹号 `!`。 @@ -356,7 +356,7 @@ $model->secret = $secret; ``` -## 数据导出 +## 数据导出 模型通常要导出成不同格式,例如,你可能想将模型的一个集合转成JSON或Excel格式, 导出过程可分解为两个步骤,第一步,模型转换成数组;第二步,数组转换成所需要的格式。 @@ -377,7 +377,7 @@ $array = $post->attributes; 实际上,它是导出模型到 RESTful 网页服务开发的默认方法,详情请参阅[响应格式](rest-response-formatting.md). -### 字段 +### 字段 字段是模型通过调用[[yii\base\Model::toArray()]]生成的数组的单元名。 @@ -430,7 +430,7 @@ public function fields() > `auth_key`, `password_hash` and `password_reset_token`。 -## 最佳实践 +## 最佳实践 模型是代表业务数据、规则和逻辑的中心地方,通常在很多地方重用, 在一个设计良好的应用中,模型通常比[控制器](structure-controllers.md)代码多。 diff --git a/docs/guide-zh-CN/structure-modules.md b/docs/guide-zh-CN/structure-modules.md index 6ad4217ab3b..d0503985277 100644 --- a/docs/guide-zh-CN/structure-modules.md +++ b/docs/guide-zh-CN/structure-modules.md @@ -8,7 +8,7 @@ 模块不能单独部署,必须属于某个应用主体。 -## 创建模块 +## 创建模块 模块被组织成一个称为[[yii\base\Module::basePath|base path]]的目录, 在该目录中有子目录如`controllers`, `models`, `views` 分别为对应控制器,模型,视图和其他代码,和应用非常类似。 @@ -27,7 +27,7 @@ forum/ ``` -### 模块类 +### 模块类 每个模块都有一个继承[[yii\base\Module]]的模块类,该类文件直接放在模块的[[yii\base\Module::basePath|base path]]目录下, 并且能被 [自动加载](concept-autoloading.md)。当一个模块被访问,和 [应用主体实例](structure-applications.md) @@ -77,7 +77,7 @@ return [ ``` -### 模块中的控制器 +### 模块中的控制器 创建模块的控制器时,惯例是将控制器类放在模块类命名空间的`controllers`子命名空间中, 也意味着要将控制器类文件放在模块[[yii\base\Module::basePath|base path]]目录中的`controllers`子目录中。 @@ -99,7 +99,7 @@ class PostController extends Controller 这类似于 [应用主体配置](structure-applications.md#controller-map) 所做的。 -### 模块中的视图 +### 模块中的视图 视图应放在模块的[[yii\base\Module::basePath|base path]]对应目录下的 `views` 目录, 对于模块中控制器对应的视图文件应放在 `views/ControllerID` 目录下, @@ -111,7 +111,7 @@ class PostController extends Controller 如果没有配置 `layout` 属性名,默认会使用应用的布局。 -## 使用模块 +## 使用模块 要在应用中使用模块,只需要将模块加入到应用主体配置的[[yii\base\Application::modules|modules]]属性的列表中, 如下代码的[应用主体配置](structure-applications.md#application-configurations) 使用 `forum` 模块: @@ -131,7 +131,7 @@ class PostController extends Controller 它标识该应用中唯一的模块,数组的值为用来创建模块的 [配置](concept-configurations.md)。 -### 路由 +### 路由 和访问应用的控制器类似,[路由](structure-controllers.md#routes) 也用在模块中控制器的寻址, 模块中控制器的路由必须以模块ID开始,接下来为控制器ID和操作ID。 @@ -140,7 +140,7 @@ class PostController extends Controller 也就是说路由 `forum` 可能代表 `forum` 模块的 `default` 控制器。 -### 访问模块 +### 访问模块 在模块中,可能经常需要获取[模块类](#module-classes)的实例来访问模块ID,模块参数,模块组件等, 可以使用如下语句来获取: @@ -174,7 +174,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -### 引导启动模块 +### 引导启动模块 有些模块在每个请求下都有运行, [[yii\debug\Module|debug]] 模块就是这种, 为此将这种模块加入到应用主体的 [[yii\base\Application::bootstrap|bootstrap]] 属性中。 @@ -194,7 +194,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -## 模块嵌套 +## 模块嵌套 模块可无限级嵌套,也就是说,模块可以包含另一个包含模块的模块,我们称前者为*父模块*,后者为*子模块*, 子模块必须在父模块的[[yii\base\Module::modules|modules]]属性中申明,例如: @@ -222,7 +222,7 @@ class Module extends \yii\base\Module 在模块`forum`中子模块`admin`中`dashboard`控制器的`index`操作。 -## 最佳实践 +## 最佳实践 模块在大型项目中常备使用,这些项目的特性可分组,每个组包含一些强相关的特性, 每个特性组可以做成一个模块由特定的开发人员和开发组来开发和维护。 diff --git a/docs/guide-zh-CN/structure-views.md b/docs/guide-zh-CN/structure-views.md index 78e659747ff..b61d446fb0c 100644 --- a/docs/guide-zh-CN/structure-views.md +++ b/docs/guide-zh-CN/structure-views.md @@ -7,7 +7,7 @@ 该组件主要提供通用方法帮助视图构造和渲染,简单起见,我们称视图模板或视图模板文件为视图。 -## 创建视图 +## 创建视图 如前所述,视图为包含HTML和PHP代码的PHP脚本,如下代码为一个登录表单的视图, 可看到PHP代码用来生成动态内容如页面标题和表单,HTML代码把它组织成一个漂亮的HTML页面。 @@ -42,7 +42,7 @@ $this->title = 'Login'; > 技巧: 将预定义变量列到视图文件头部注释处,这样可被IDE编辑器识别,也是生成视图文档的好方法。 -### 安全 +### 安全 当创建生成HTML页面的视图时,在显示之前将用户输入数据进行转码和过滤非常重要, 否则,你的应用可能会被[跨站脚本](http://en.wikipedia.org/wiki/Cross-site_scripting) 攻击。 @@ -75,7 +75,7 @@ use yii\helpers\HtmlPurifier; [缓存](caching-overview.md) 过滤后的结果。 -### 组织视图 +### 组织视图 与 [控制器](structure-controllers.md) 和 [模型](structure-models.md) 类似,在组织视图上有一些约定: @@ -91,7 +91,7 @@ use yii\helpers\HtmlPurifier; 可覆盖控制器或小部件的 [[yii\base\ViewContextInterface::getViewPath()]] 方法来自定义视图文件默认目录。 -## 渲染视图 +## 渲染视图 可在 [控制器](structure-controllers.md), [小部件](structure-widgets.md), 或其他地方调用渲染视图方法来渲染视图, 该方法类似以下格式: @@ -106,7 +106,7 @@ methodName($view, $params = []) ``` -### 控制器中渲染 +### 控制器中渲染 在 [控制器](structure-controllers.md) 中,可调用以下控制器方法来渲染视图: @@ -145,7 +145,7 @@ class PostController extends Controller ``` -### 小部件中渲染 +### 小部件中渲染 在 [小部件](structure-widgets.md) 中,可调用以下小部件方法来渲染视图: Within [widgets](structure-widgets.md), you may call the following widget methods to render views. @@ -176,7 +176,7 @@ class ListWidget extends Widget ``` -### 视图中渲染 +### 视图中渲染 可以在视图中渲染另一个视图,可以调用[[yii\base\View|view component]]视图组件提供的以下方法: @@ -193,7 +193,7 @@ class ListWidget extends Widget ``` -### 其他地方渲染 +### 其他地方渲染 在任何地方都可以通过表达式 `Yii::$app->view` 访问 [[yii\base\View|view]] 应用组件, 调用它的如前所述的方法渲染视图,例如: @@ -204,7 +204,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); ``` -### 视图名 +### 视图名 渲染视图时,可指定一个视图名或视图文件路径/别名,大多数情况下使用前者因为前者简洁灵活, 我们称用名字的视图为 *视图名*. @@ -231,7 +231,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); 会渲染 `@app/views/post/_overview.php` 视图文件。 -### 视图中访问数据 +### 视图中访问数据 在视图中有两种方式访问数据:推送和拉取。 @@ -259,7 +259,7 @@ The controller ID is: context->id ?> 缺点是需要手动构建数组,有些繁琐,在不同地方渲染时容易出错。 -### 视图间共享数据 +### 视图间共享数据 [[yii\base\View|view component]]视图组件提供[[yii\base\View::params|params]]参数属性来让不同视图共享数据。 @@ -279,14 +279,14 @@ $this->params['breadcrumbs'][] = 'About Us'; ``` -## 布局 +## 布局 布局是一种特殊的视图,代表多个视图的公共部分,例如,大多数Web应用共享相同的页头和页尾, 在每个视图中重复相同的页头和页尾,更好的方式是将这些公共放到一个布局中, 渲染内容视图后在合适的地方嵌入到布局中。 -### 创建布局 +### 创建布局 由于布局也是视图,它可像普通视图一样创建,布局默认存储在`@app/views/layouts`路径下, [模块](structure-modules.md)中使用的布局应存储在[[yii\base\Module::basePath|module directory]]模块目录 @@ -342,7 +342,7 @@ use yii\helpers\Html; 会被注册的HTML代码(如JavaScript)在页面主体结尾处替换。 -### 布局中访问数据 +### 布局中访问数据 在布局中可访问两个预定义变量:`$this` 和 `$content`,前者对应和普通视图类似的[[yii\base\View|view]] 视图组件 后者包含调用[[yii\base\Controller::render()|render()]]方法渲染内容视图的结果。 @@ -351,7 +351,7 @@ use yii\helpers\Html; 如果想从内容视图中传递数据到布局,可使用[视图间共享数据](#sharing-data-among-views)一节中的方法。 -### 使用布局 +### 使用布局 如[控制器中渲染](#rendering-in-controllers)一节描述,当控制器调用[[yii\base\Controller::render()|render()]] 方法渲染视图时,会同时使用布局到渲染结果中,默认会使用`@app/views/layouts/main.php`布局文件。 @@ -399,7 +399,7 @@ class PostController extends Controller 布局的值没有包含文件扩展名,默认使用 `.php`作为扩展名。 -### 嵌套布局 +### 嵌套布局 有时候你想嵌套一个布局到另一个,例如,在Web站点不同地方,想使用不同的布局, 同时这些布局共享相同的生成全局HTML5页面结构的基本布局,可以在子布局中调用 @@ -421,7 +421,7 @@ class PostController extends Controller 使用以上方式可多层嵌套布局。 -### 使用数据块 +### 使用数据块 数据块可以在一个地方指定视图内容在另一个地方显示,通常和布局一起使用, 例如,可在内容视图中定义数据块在布局中显示它。 @@ -480,7 +480,7 @@ class PostController extends Controller ``` -## 使用视图组件 +## 使用视图组件 [[yii\base\View|View components]]视图组件提供许多视图相关特性,可创建[[yii\base\View]]或它的子类实例来获取视图组件, 大多数情况下主要使用 `view` 应用组件,可在[应用配置](structure-applications.md#application-configurations)中配置该组件, @@ -510,7 +510,7 @@ class PostController extends Controller 开发Web页面时,也可能频繁使用以下实用的小特性。 -### 设置页面标题 +### 设置页面标题 每个Web页面应有一个标题,正常情况下标题的标签显示在 [布局](#layouts)中, 但是实际上标题大多由内容视图而不是布局来决定,为解决这个问题, [[yii\web\View]] 提供 @@ -531,7 +531,7 @@ $this->title = 'My page title'; ``` -### 注册Meta元标签 +### 注册Meta元标签 Web页面通常需要生成各种元标签提供给不同的浏览器,如``中的页面标题,元标签通常在布局中生成。 @@ -561,7 +561,7 @@ $this->registerMetaTag(['name' => 'description', 'content' => 'This website is a ``` -### 注册链接标签 +### 注册链接标签 和 [Meta标签](#adding-meta-tags) 类似,链接标签有时很实用,如自定义网站图标,指定Rss订阅,或授权OpenID到其他服务器。 可以和元标签相似的方式调用[[yii\web\View::registerLinkTag()]],例如,在内容视图中注册链接标签如下所示: @@ -585,7 +585,7 @@ $this->registerLinkTag([ 调用[[yii\web\View::registerLinkTag()|registerLinkTag()]] 指定键来避免生成重复链接标签。 -## 视图事件 +## 视图事件 [[yii\base\View|View components]] 视图组件会在视图渲染过程中触发几个事件, 可以在内容发送给终端用户前,响应这些事件来添加内容到视图中或调整渲染结果。 @@ -608,7 +608,7 @@ $this->registerLinkTag([ ``` -## 渲染静态页面 +## 渲染静态页面 静态页面指的是大部分内容为静态的不需要控制器传递动态数据的Web页面。 @@ -655,7 +655,7 @@ http://localhost/index.php?r=site/page&view=about 修改搜索视图的目录。 -## 最佳实践 +## 最佳实践 视图负责将模型的数据展示用户想要的格式,总之,视图 diff --git a/docs/guide-zh-CN/structure-widgets.md b/docs/guide-zh-CN/structure-widgets.md index 149fa0d63d1..0b4e9baee3f 100644 --- a/docs/guide-zh-CN/structure-widgets.md +++ b/docs/guide-zh-CN/structure-widgets.md @@ -17,7 +17,7 @@ Yii提供许多优秀的小部件,比如[[yii\widgets\ActiveForm|active form]] 接下来介绍小部件的基本知识,如果你想了解某个小部件请参考对应的类API文档。 -## 使用小部件 +## 使用小部件 小部件基本上在[views](structure-views.md)中使用,在视图中可调用 [[yii\base\Widget::widget()]] 方法使用小部件。 该方法使用 [配置](concept-configurations.md) 数组初始化小部件并返回小部件渲染后的结果。 @@ -64,8 +64,8 @@ use yii\helpers\Html; 调用 [[yii\base\Widget::begin()]] 方法返回一个可组建小部件内容的小部件实例。 -## 创建小部件 -## Creating Widgets +## 创建小部件 +## Creating Widgets 继承 [[yii\base\Widget]] 类并覆盖 [[yii\base\Widget::init()]] 和/或 [[yii\base\Widget::run()]] 方法可创建小部件。通常`init()` 方法处理小部件属性, @@ -166,7 +166,7 @@ public function run() 可以覆盖[[yii\base\Widget::getViewPath()]]方法自定义视图文件所在路径。 -## 最佳实践 +## 最佳实践 小部件是面向对象方式来重用视图代码。 diff --git a/docs/guide-zh-CN/tutorial-core-validators.md b/docs/guide-zh-CN/tutorial-core-validators.md index fc20889b575..3bd0fcb03c2 100644 --- a/docs/guide-zh-CN/tutorial-core-validators.md +++ b/docs/guide-zh-CN/tutorial-core-validators.md @@ -17,7 +17,7 @@ public function rules() 下面,我们将详细介绍每一款验证器的主要用法和属性。 -## [[yii\validators\BooleanValidator|boolean(布尔型)]] +## [[yii\validators\BooleanValidator|boolean(布尔型)]] ```php [ @@ -40,7 +40,7 @@ public function rules() [[yii\validators\BooleanValidator::strict|strict]] 属性为假。 -## [[yii\captcha\CaptchaValidator|captcha(验证码)]] +## [[yii\captcha\CaptchaValidator|captcha(验证码)]] ```php [ @@ -56,7 +56,7 @@ public function rules() - `skipOnEmpty`:当输入为空时,是否跳过验证。默认为 false,也就是输入值为必需项。 -## [[yii\validators\CompareValidator|compare(比较)]] +## [[yii\validators\CompareValidator|compare(比较)]] ```php [ @@ -83,7 +83,7 @@ public function rules() * `<=`:检查待测目标值是否小于等于给定被测值。 -## [[yii\validators\DateValidator|date(日期)]] +## [[yii\validators\DateValidator|date(日期)]] ```php [ @@ -98,7 +98,7 @@ public function rules() - `timestampAttribute`:用于保存用输入时间/日期转换出来的 UNIX 时间戳的特性。 -## [[yii\validators\DefaultValueValidator|default(默认值)]] +## [[yii\validators\DefaultValueValidator|default(默认值)]] ```php [ @@ -129,7 +129,7 @@ function foo($model, $attribute) { > 补充:如何判断待测值是否为空,被写在另外一个话题的[处理空输入](input-validation.md#handling-empty-inputs)章节。 -## [[yii\validators\NumberValidator|double(双精度浮点型)]] +## [[yii\validators\NumberValidator|double(双精度浮点型)]] ```php [ @@ -144,7 +144,7 @@ function foo($model, $attribute) { - `min`:下限值(含界点)。若不设置,则验证器不检查下限。 -## [[yii\validators\EmailValidator|email(电子邮件)]] +## [[yii\validators\EmailValidator|email(电子邮件)]] ```php [ @@ -160,7 +160,7 @@ function foo($model, $attribute) { - `enableIDN`:验证过程是否应该考虑 IDN(internationalized domain names,国际化域名,也称多语种域名,比如中文域名)。默认为 false。要注意但是为使用 IDN 验证功能,请先确保安装并开启 `intl` PHP 扩展,不然会导致抛出异常。 -## [[yii\validators\ExistValidator|exist(存在性)]] +## [[yii\validators\ExistValidator|exist(存在性)]] ```php [ @@ -200,7 +200,7 @@ function foo($model, $attribute) { - 最后别忘了,unique 验证器不存在 `allowArray` 属性哦。 -## [[yii\validators\FileValidator|file(文件)]] +## [[yii\validators\FileValidator|file(文件)]] ```php [ @@ -224,7 +224,7 @@ function foo($model, $attribute) { `FileValidator` 通常与 [[yii\web\UploadedFile]] 共同使用。请参考 [文件上传](input-file-upload.md)章节来了解有关文件上传与上传文件的检验的全部内容。 -## [[yii\validators\FilterValidator|filter(滤镜)]] +## [[yii\validators\FilterValidator|filter(滤镜)]] ```php [ @@ -247,7 +247,7 @@ function foo($model, $attribute) { > 技巧:如果你只是想要用 trim 处理下输入值,你可以直接用 [trim](#trim) 验证器的。 -## [[yii\validators\ImageValidator|image(图片)]] +## [[yii\validators\ImageValidator|image(图片)]] ```php [ @@ -267,7 +267,7 @@ function foo($model, $attribute) { - `maxHeight`:图片的最大高度。默认为 null,代表无上限。 -## [[yii\validators\RangeValidator|in(范围)]] +## [[yii\validators\RangeValidator|in(范围)]] ```php [ @@ -284,7 +284,7 @@ function foo($model, $attribute) { - `allowArray`:是否接受输入值为数组。当该值为 true 且输入值为数组时,数组内的每一个元素都必须在给定列表内存在,否则返回验证失败。 -## [[yii\validators\NumberValidator|integer(整数)]] +## [[yii\validators\NumberValidator|integer(整数)]] ```php [ @@ -299,7 +299,7 @@ function foo($model, $attribute) { - `min`:下限值(含界点)。若不设置,则验证器不检查下限。 -## [[yii\validators\RegularExpressionValidator|match(正则表达式)]] +## [[yii\validators\RegularExpressionValidator|match(正则表达式)]] ```php [ @@ -314,7 +314,7 @@ function foo($model, $attribute) { - `not`:是否对验证的结果取反。默认为 false,代表输入值匹配正则表达式时验证成功。如果设为 true,则输入值不匹配正则时返回匹配成功。 -## [[yii\validators\NumberValidator|number(数字)]] +## [[yii\validators\NumberValidator|number(数字)]] ```php [ @@ -329,7 +329,7 @@ function foo($model, $attribute) { - `min`:下限值(含界点)。若不设置,则验证器不检查下限。 -## [[yii\validators\RequiredValidator|required(必填)]] +## [[yii\validators\RequiredValidator|required(必填)]] ```php [ @@ -348,7 +348,7 @@ function foo($model, $attribute) { > 补充:如何判断待测值是否为空,被写在另外一个话题的[处理空输入](input-validation.md#handling-empty-inputs)章节。 -## [[yii\validators\SafeValidator|safe(安全)]] +## [[yii\validators\SafeValidator|safe(安全)]] ```php [ @@ -360,7 +360,7 @@ function foo($model, $attribute) { 该验证器并不进行数据验证。而是把一个特性标记为[安全特性](structure-models.md#safe-attributes)。 -## [[yii\validators\StringValidator|string(字符串)]] +## [[yii\validators\StringValidator|string(字符串)]] ```php [ @@ -381,7 +381,7 @@ function foo($model, $attribute) { - `encoding`:待测字符串的编码方式。若不设置,则使用应用自身的 [[yii\base\Application::charset|charset]] 属性值,该值默认为 `UTF-8`。 -## [[yii\validators\FilterValidator|trim(译为修剪/裁边)]] +## [[yii\validators\FilterValidator|trim(译为修剪/裁边)]] ```php [ @@ -393,7 +393,7 @@ function foo($model, $attribute) { 该验证器并不进行数据验证。而是,trim 掉输入值两侧的多余空格。注意若该输入值为数组,那它会忽略掉该验证器。 -## [[yii\validators\UniqueValidator|unique(唯一性)]] +## [[yii\validators\UniqueValidator|unique(唯一性)]] ```php [ @@ -429,7 +429,7 @@ function foo($model, $attribute) { - 最后别忘了,unique 验证器不存在 `allowArray` 属性哦。 -## [[yii\validators\UrlValidator|url(网址)]] +## [[yii\validators\UrlValidator|url(网址)]] ```php [ diff --git a/docs/guide-zh-CN/tutorial-yii-integration.md b/docs/guide-zh-CN/tutorial-yii-integration.md index 13a34196359..b53d6f0e54d 100644 --- a/docs/guide-zh-CN/tutorial-yii-integration.md +++ b/docs/guide-zh-CN/tutorial-yii-integration.md @@ -4,12 +4,12 @@ 有时,你可能会需要在 Yii 应用中使用第三方的代码。又或者是你想要在第三方系统中把 Yii 作为类库引用。在下面这个板块中,我们向你展示如何实现这些目标。 -## 在 Yii 中使用第三方类库 +## 在 Yii 中使用第三方类库 要想在 Yii 应用中使用第三方类库,你主要需要确保这些库中的类文件都可以被正常导入或可以被自动加载。 -### 使用 Composer 包 +### 使用 Composer 包 目前很多第三方的类库都以 [Composer](https://getcomposer.org/) 包的形式发布。你只需要以下两个简单的步骤即可安装他们: @@ -28,7 +28,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` -### 使用下载的类库 +### 使用下载的类库 若你的类库并未发布为一个 Composer 包,你可以参考以下安装说明来安装它。在大多数情况下,你需要预先下载一个发布文件,并把它解压缩到 `BasePath/vendor` 目录,这里的 `BasePath` 代指你应用程序自身的 [base path(主目录)](structure-applications.md#basePath)。 @@ -61,7 +61,7 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php'; ``` -## 在第三方系统内使用 Yii +## 在第三方系统内使用 Yii 因为 Yii 提供了很多牛逼的功能,有时,你可能会想要使用它们中的一些功能用来支持开发或完善某些第三方的系统,比如:WordPress,Joomla,或是用其他 PHP 框架开发的应用程序。举两个例子吧,你可能会想念方便的 [[yii\helpers\ArrayHelper]] 类,或在第三方系统中使用 [Active Record](db-active-record.md) 活动记录功能。要实现这些目标,你只需两个步骤:安装 Yii,启动 Yii。 @@ -91,7 +91,7 @@ new yii\web\Application($yiiConfig); // 千万别在这调用 run() 方法。( 现在,你就可以使用 Yii 提供的绝大多数功能了。比如,创建 AR 类,并用它们来操作数据库。 -## 配合使用 Yii 2 和 Yii 1 +## 配合使用 Yii 2 和 Yii 1 如果你之前使用 Yii 1,大概你也有正在运行的 Yii 1 应用吧。不必用 Yii 2 重写整个应用,你也可以通过增添对哪些 Yii 2 独占功能的支持来增强这个系统。下面我们就来详细描述一下具体的实现过程。 diff --git a/docs/guide/caching-data.md b/docs/guide/caching-data.md index 8dd146061ff..a27d1006c64 100644 --- a/docs/guide/caching-data.md +++ b/docs/guide/caching-data.md @@ -24,7 +24,7 @@ if ($data === false) { ``` -## Cache Components +## Cache Components Data caching relies on the so-called *cache components* which represent various cache storage, such as memory, files, databases. @@ -73,7 +73,7 @@ For example, you can modify the above configuration to use [[yii\caching\ApcCach by default by many cache-dependent classes (e.g. [[yii\web\UrlManager]]). -### Supported Cache Storage +### Supported Cache Storage Yii supports a wide range of cache storage. The following is a summary: @@ -110,7 +110,7 @@ Yii supports a wide range of cache storage. The following is a summary: or database-based cache storage to store data that is big and less frequently used (e.g. page content). -## Cache APIs +## Cache APIs All cache components have the same base class [[yii\caching\Cache]] and thus support the following APIs: @@ -144,7 +144,7 @@ $value2 = $cache['var2']; // equivalent to: $value2 = $cache->get('var2'); ``` -### Cache Keys +### Cache Keys Each data item stored in cache is uniquely identified by a key. When you store a data item in cache, you have to specify a key for it. Later when you retrieve the data item from cache, you should provide @@ -183,7 +183,7 @@ property. For example, in the application configuration you can write the follow To ensure interoperability, only alphanumeric characters should be used. -### Cache Expiration +### Cache Expiration A data item stored in a cache will remain there forever unless it is removed because of some caching policy enforcement (e.g. caching space is full and the oldest data are removed). To change this behavior, you can provide @@ -205,7 +205,7 @@ if ($data === false) { ``` -### Cache Dependencies +### Cache Dependencies Besides expiration setting, cached data item may also be invalidated by changes of the so-called *cache dependencies*. For example, [[yii\caching\FileDependency]] represents the dependency of a file's modification time. @@ -241,7 +241,7 @@ Below is a summary of the available cache dependencies: the cached data items with the specified tag(s) by calling [[yii\caching\TagDependency::invalidate()]]. -## Query Caching +## Query Caching Query caching is a special caching feature built on top of data caching. It is provided to cache the result of database queries. @@ -267,7 +267,7 @@ Query caching can be used for [DAO](db-dao.md) as well as [ActiveRecord](db-acti and are potentially more efficient. -### Configurations +### Configurations Query caching has three global configurable options through [[yii\db\Connection]]: @@ -282,7 +282,7 @@ Query caching has three global configurable options through [[yii\db\Connection] It defaults to `'cache'`. Query caching is enabled only if there is a valid cache application component. -### Usages +### Usages You can use [[yii\db\Connection::cache()]] if you have multiple SQL queries that need to take advantage of query caching. The usage is as follows, @@ -350,7 +350,7 @@ $result = $db->cache(function ($db) { ``` -### Limitations +### Limitations Query caching does not work with query results that contain resource handlers. For example, when using the `BLOB` column type in some DBMS, the query result will return a resource diff --git a/docs/guide/caching-fragment.md b/docs/guide/caching-fragment.md index 49e58aefa94..99c69f13470 100644 --- a/docs/guide/caching-fragment.md +++ b/docs/guide/caching-fragment.md @@ -25,14 +25,14 @@ is called, the generated content will be captured and stored in the cache. Like [data caching](caching-data.md), a unique `$id` is needed to identify a content cache. -## Caching Options +## Caching Options You may specify additional options about fragment caching by passing the option array as the second parameter to the [[yii\base\View::beginCache()|beginCache()]] method. Behind the scene, this option array will be used to configure a [[yii\widgets\FragmentCache]] widget which implements the actual fragment caching functionality. -### Duration +### Duration Perhaps the most commonly used option of fragment caching is [[yii\widgets\FragmentCache::duration|duration]]. It specifies for how many seconds the content can remain valid in a cache. The following code @@ -50,7 +50,7 @@ if ($this->beginCache($id, ['duration' => 3600])) { If the option is not set, it will take the default value 60, which means the cached content will expire in 60 seconds. -### Dependencies +### Dependencies Like [data caching](caching-data.md#cache-dependencies), content fragment being cached can also have dependencies. For example, the content of a post being displayed depends on whether or not the post is modified. @@ -74,7 +74,7 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ``` -### Variations +### Variations Content being cached may be variated according to some parameters. For example, for a Web application supporting multiple languages, the same piece of view code may generate the content in different languages. @@ -94,7 +94,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ``` -### Toggling Caching +### Toggling Caching Sometimes you may want to enable fragment caching only when certain conditions are met. For example, for a page displaying a form, you only want to cache the form when it is initially requested (via GET request). Any @@ -111,7 +111,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## Nested Caching +## Nested Caching Fragment caching can be nested. That is, a cached fragment can be enclosed within another fragment which is also cached. For example, the comments are cached in an inner fragment cache, and they are cached together with the @@ -143,7 +143,7 @@ inner cache has been invalidated. Therefore, you must be careful in setting the of the nested caches, otherwise the outdated inner fragments may be kept in the outer fragment. -## Dynamic Content +## Dynamic Content When using fragment caching, you may encounter the situation where a large fragment of content is relatively static except at one or a few places. For example, a page header may display the main menu bar together with diff --git a/docs/guide/caching-http.md b/docs/guide/caching-http.md index e9682eecbf2..ea7444836cc 100644 --- a/docs/guide/caching-http.md +++ b/docs/guide/caching-http.md @@ -13,7 +13,7 @@ only works for `GET` and `HEAD` requests. It can handle three kinds of cache-rel * [[yii\filters\HttpCache::cacheControlHeader|Cache-Control]] -## `Last-Modified` Header +## `Last-Modified` Header The `Last-Modified` header uses a timestamp to indicate if the page has been modified since the client caches it. @@ -56,7 +56,7 @@ the server will not re-generate the page, and the browser will use the cached ve As a result, server-side rendering and page content transmission are both skipped. -## `ETag` Header +## `ETag` Header The "Entity Tag" (or `ETag` for short) header use a hash to represent the content of a page. If the page is changed, the hash will be changed as well. By comparing the hash kept on the client side with the hash @@ -113,7 +113,7 @@ the cache if the page content has been modified. will be respected. -## `Cache-Control` Header +## `Cache-Control` Header The `Cache-Control` header specifies the general caching policy for pages. You may send it by configuring the [[yii\filters\HttpCache::cacheControlHeader]] property with the header value. By default, the following @@ -123,7 +123,7 @@ header will be sent: Cache-Control: public, max-age=3600 ``` -## Session Cache Limiter +## Session Cache Limiter When a page uses session, PHP will automatically send some cache-related HTTP headers as specified in the `session.cache_limiter` PHP INI setting. These headers may interfere or disable the caching @@ -135,7 +135,7 @@ these headers automatically. If you want to change this behavior, you should con for explanations about these values. -## SEO Implications +## SEO Implications Search engine bots tend to respect cache headers. Since some crawlers have a limit on how many pages per domain they process within a certain time span, introducing caching headers may help indexing your diff --git a/docs/guide/concept-aliases.md b/docs/guide/concept-aliases.md index 86bd50cb6f6..5d611d85e87 100644 --- a/docs/guide/concept-aliases.md +++ b/docs/guide/concept-aliases.md @@ -6,7 +6,7 @@ For example, the alias `@yii` represents the installation path of the Yii framew the base URL for the currently running Web application. -Defining Aliases +Defining Aliases ---------------- You can define an alias for a file path or URL by calling [[Yii::setAlias()]]: @@ -48,7 +48,7 @@ return [ ``` -Resolving Aliases +Resolving Aliases ----------------- You can call [[Yii::getAlias()]] to resolve a root alias into the file path or URL it represents. @@ -80,7 +80,7 @@ Yii::getAlias('@foo/bar/file.php'); // displays: /path2/bar/file.php If `@foo/bar` is not defined as a root alias, the last statement would display `/path/to/foo/bar/file.php`. -Using Aliases +Using Aliases ------------- Aliases are recognized in many places in Yii without needing to call [[Yii::getAlias()]] to convert @@ -99,7 +99,7 @@ $cache = new FileCache([ Please pay attention to the API documentation to see if a property or method parameter supports aliases. -Predefined Aliases +Predefined Aliases ------------------ Yii predefines a set of aliases to easily reference commonly used file paths and URLs: @@ -118,7 +118,7 @@ The `@yii` alias is defined when you include the `Yii.php` file in your [entry s [configuration](concept-configurations.md). -Extension Aliases +Extension Aliases ----------------- An alias is automatically defined for each [extension](structure-extensions.md) that is installed via Composer. diff --git a/docs/guide/concept-autoloading.md b/docs/guide/concept-autoloading.md index c7f5cc56a99..48bb7247148 100644 --- a/docs/guide/concept-autoloading.md +++ b/docs/guide/concept-autoloading.md @@ -10,7 +10,7 @@ The autoloader is installed when you include the `Yii.php` file. mind that the content we are describing here applies to autoloading of interfaces and traits as well. -Using the Yii Autoloader +Using the Yii Autoloader ------------------------ To make use of the Yii class autoloader, you should follow two simple rules when creating and naming your classes: @@ -37,7 +37,7 @@ the front-end tier has a root alias `@frontend`, while the back-end tier root al allow these classes to be autoloaded by the Yii autoloader. -Class Map +Class Map --------- The Yii class autoloader supports the *class map* feature, which maps class names to the corresponding class file paths. @@ -55,7 +55,7 @@ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; [bootstrapping](runtime-bootstrapping.md) process so that the map is ready before your classes are used. -Using Other Autoloaders +Using Other Autoloaders ----------------------- Because Yii embraces Composer as a package dependency manager, it is recommended that you also install @@ -81,7 +81,7 @@ to be autoloadable. and include it in your [entry script](structure-entry-scripts.md). -Autoloading Extension Classes +Autoloading Extension Classes ----------------------------- The Yii autoloader is capable of autoloading [extension](structure-extensions.md) classes. The sole requirement diff --git a/docs/guide/concept-behaviors.md b/docs/guide/concept-behaviors.md index bf4bb05ecbb..563883a3527 100644 --- a/docs/guide/concept-behaviors.md +++ b/docs/guide/concept-behaviors.md @@ -9,7 +9,7 @@ can respond to the [events](concept-events.md) triggered by the component, which code execution of the component. -Defining Behaviors +Defining Behaviors ------------------ To define a behavior, create a class that extends [[yii\base\Behavior]], or extends a child class. For example: @@ -96,7 +96,7 @@ function ($event) { } ``` -Attaching Behaviors +Attaching Behaviors ------------------- You can attach a behavior to a [[yii\base\Component|component]] either statically or dynamically. The former is more common in practice. @@ -189,7 +189,7 @@ You may also attach behaviors through [configurations](concept-configurations.md For more details, please refer to the [Configurations](concept-configurations.md#configuration-format) section. -Using Behaviors +Using Behaviors --------------- To use a behavior, first attach it to a [[yii\base\Component|component]] per the instructions above. Once a behavior is attached to a component, its usage is straightforward. @@ -230,7 +230,7 @@ $behaviors = $component->getBehaviors(); ``` -Detaching Behaviors +Detaching Behaviors ------------------- To detach a behavior, call [[yii\base\Component::detachBehavior()]] with the name associated with the behavior: @@ -246,7 +246,7 @@ $component->detachBehaviors(); ``` -Using `TimestampBehavior` +Using `TimestampBehavior` ------------------------- To wrap up, let's take a look at [[yii\behaviors\TimestampBehavior]]. This behavior supports automatically @@ -303,7 +303,7 @@ to a specified attribute and save it to the database: $user->touch('login_time'); ``` -Comparing Behaviors with Traits +Comparing Behaviors with Traits ---------------------- While behaviors are similar to [traits](http://www.php.net/traits) in that they both "inject" their @@ -311,7 +311,7 @@ properties and methods to the primary class, they differ in many aspects. As exp both have pros and cons. They are more like complements to each other rather than alternatives. -### Reasons to Use Behaviors +### Reasons to Use Behaviors Behavior classes, like normal classes, support inheritance. Traits, on the other hand, can be considered as language-supported copy and paste. They do not support inheritance. @@ -328,7 +328,7 @@ Name conflicts caused by different traits requires manual resolution by renaming properties or methods. -### Reasons to Use Traits +### Reasons to Use Traits Traits are much more efficient than behaviors as behaviors are objects that take both time and memory. diff --git a/docs/guide/concept-configurations.md b/docs/guide/concept-configurations.md index bd47b42a23d..fb26d458037 100644 --- a/docs/guide/concept-configurations.md +++ b/docs/guide/concept-configurations.md @@ -33,7 +33,7 @@ Yii::configure($object, $config); Note that, in this case, the configuration array should not contain a `class` element. -## Configuration Format +## Configuration Format The format of a configuration can be formally described as: @@ -76,14 +76,14 @@ Below is an example showing a configuration with initial property values, event ``` -## Using Configurations +## Using Configurations Configurations are used in many places in Yii. At the beginning of this section, we have shown how to create an object according to a configuration by using [[Yii::createObject()]]. In this subsection, we will describe application configurations and widget configurations - two major usages of configurations. -### Application Configurations +### Application Configurations The configuration for an [application](structure-applications.md) is probably one of the most complex arrays in Yii. This is because the [[yii\web\Application|application]] class has a lot of configurable properties and events. @@ -134,7 +134,7 @@ More details about configuring the `components` property of an application can b in the [Applications](structure-applications.md) section and the [Service Locator](concept-service-locator.md) section. -### Widget Configurations +### Widget Configurations When using [widgets](structure-widgets.md), you often need to use configurations to customize the widget properties. Both of the [[yii\base\Widget::widget()]] and [[yii\base\Widget::begin()]] methods can be used to create @@ -159,7 +159,7 @@ The `items` property is also configured with menu items to be displayed. Note that because the class name is already given, the configuration array should NOT have the `class` key. -## Configuration Files +## Configuration Files When a configuration is very complex, a common practice is to store it in one or multiple PHP files, known as *configuration files*. A configuration file returns a PHP array representing the configuration. @@ -212,7 +212,7 @@ $config = require('path/to/web.php'); ``` -## Default Configurations +## Default Configurations The [[Yii::createObject()]] method is implemented based on a [dependency injection container](concept-di-container.md). It allows you to specify a set of the so-called *default configurations* which will be applied to ALL instances of @@ -232,7 +232,7 @@ Without using default configurations, you would have to configure `maxButtonCoun link pagers. -## Environment Constants +## Environment Constants Configurations often vary according to the environment in which an application runs. For example, in development environment, you may want to use a database named `mydb_dev`, while on production server diff --git a/docs/guide/concept-di-container.md b/docs/guide/concept-di-container.md index 411836fd3e5..f777b40bb1d 100644 --- a/docs/guide/concept-di-container.md +++ b/docs/guide/concept-di-container.md @@ -6,7 +6,7 @@ all their dependent objects. [Martin's article](http://martinfowler.com/articles explained why DI container is useful. Here we will mainly explain the usage of the DI container provided by Yii. -Dependency Injection +Dependency Injection -------------------- Yii provides the DI container feature through the class [[yii\di\Container]]. It supports the following kinds of @@ -17,7 +17,7 @@ dependency injection: * PHP callable injection. -### Constructor Injection +### Constructor Injection The DI container supports constructor injection with the help of type hints for constructor parameters. The type hints tell the container which classes or interfaces are dependent when it is used to create a new object. @@ -39,7 +39,7 @@ $foo = new Foo($bar); ``` -### Setter and Property Injection +### Setter and Property Injection Setter and property injection is supported through [configurations](concept-configurations.md). When registering a dependency or when creating a new object, you can provide a configuration which @@ -73,7 +73,7 @@ $container->get('Foo', [], [ ``` -### PHP Callable Injection +### PHP Callable Injection In this case, the container will use a registered PHP callable to build new instances of a class. The callable is responsible to resolve the dependencies and inject them appropriately to the newly @@ -88,7 +88,7 @@ $foo = $container->get('Foo'); ``` -Registering Dependencies +Registering Dependencies ------------------------ You can use [[yii\di\Container::set()]] to register dependencies. The registration requires a dependency name @@ -157,7 +157,7 @@ $container->setSingleton('yii\db\Connection', [ ``` -Resolving Dependencies +Resolving Dependencies ---------------------- Once you have registered dependencies, you can use the DI container to create new objects, @@ -246,7 +246,7 @@ $lister = new UserLister($finder); ``` -Practical Usage +Practical Usage --------------- Yii creates a DI container when you include the `Yii.php` file in the [entry script](structure-entry-scripts.md) @@ -308,7 +308,7 @@ Now if you access the controller again, an instance of `app\components\BookingSe created and injected as the 3rd parameter to the controller's constructor. -When to Register Dependencies +When to Register Dependencies ----------------------------- Because dependencies are needed when new objects are being created, their registration should be done @@ -320,7 +320,7 @@ as early as possible. The followings are the recommended practices: in the bootstrapping class of the extension. -Summary +Summary ------- Both dependency injection and [service locator](concept-service-locator.md) are popular design patterns diff --git a/docs/guide/concept-events.md b/docs/guide/concept-events.md index 0fb6f1d7daa..0b915a5a557 100644 --- a/docs/guide/concept-events.md +++ b/docs/guide/concept-events.md @@ -10,7 +10,7 @@ Yii introduces a base class called [[yii\base\Component]] to support events. If events, it should extend from [[yii\base\Component]], or from a child class. -Event Handlers +Event Handlers -------------- An event handler is a [PHP callback](http://www.php.net/manual/en/language.types.callable.php) that gets executed @@ -36,7 +36,7 @@ Through the `$event` parameter, an event handler may get the following informati - [[yii\base\Event::data|custom data]]: the data that is provided when attaching the event handler (to be explained next) -Attaching Event Handlers +Attaching Event Handlers ------------------------ You can attach a handler to an event by calling the [[yii\base\Component::on()]] method. For example: @@ -99,7 +99,7 @@ $foo->on(Foo::EVENT_HELLO, function ($event) { }, $data, false); ``` -Triggering Events +Triggering Events ----------------- Events are triggered by calling the [[yii\base\Component::trigger()]] method. The method requires an *event name*, @@ -164,7 +164,7 @@ When the [[yii\base\Component::trigger()]] method is called, it will call all ha the named event. -Detaching Event Handlers +Detaching Event Handlers ------------------------ To detach a handler from an event, call the [[yii\base\Component::off()]] method. For example: @@ -194,7 +194,7 @@ $foo->off(Foo::EVENT_HELLO); ``` -Class-Level Event Handlers +Class-Level Event Handlers -------------------------- The above subsections described how to attach a handler to an event on an *instance level*. @@ -252,7 +252,7 @@ Event::off(Foo::className(), Foo::EVENT_HELLO); ``` -Global Events +Global Events ------------- Yii supports a so-called *global event*, which is actually a trick based on the event mechanism described above. diff --git a/docs/guide/db-active-record.md b/docs/guide/db-active-record.md index d2e52511e03..768fae7d050 100644 --- a/docs/guide/db-active-record.md +++ b/docs/guide/db-active-record.md @@ -706,7 +706,7 @@ if ($customers[0]->orders[0]->customer === $customers[0]) { > you cannot call [[yii\db\ActiveQuery::inverseOf()]] further. -Joining with Relations +Joining with Relations ---------------------- When working with relational databases, a common task is to join multiple tables and apply various diff --git a/docs/guide/db-dao.md b/docs/guide/db-dao.md index 126a7b474a1..743fab56b8f 100644 --- a/docs/guide/db-dao.md +++ b/docs/guide/db-dao.md @@ -20,7 +20,7 @@ Yii DAO supports the following databases out of box: - [MSSQL](https://www.microsoft.com/en-us/sqlserver/default.aspx): version 2008 or higher. -## Creating DB Connections +## Creating DB Connections To access a database, you first need to connect to it by creating an instance of [[yii\db\Connection]]: @@ -90,7 +90,7 @@ and [[yii\db\Connection::password|password]]. Please refer to [[yii\db\Connectio you execute the first SQL or you call the [[yii\db\Connection::open()|open()]] method explicitly. -## Executing SQL Queries +## Executing SQL Queries Once you have a database connection instance, you can execute a SQL query by taking the following steps: @@ -149,7 +149,7 @@ return [ ``` -### Binding Parameters +### Binding Parameters When creating a DB command from a SQL with parameters, you should almost always use the approach of binding parameters to prevent SQL injection attacks. For example, @@ -213,7 +213,7 @@ before each subsequent execution (this is often done with loops). Executing quer more efficient than running a new query for every different parameter value. -### Executing Non-SELECT Queries +### Executing Non-SELECT Queries The `queryXyz()` methods introduced in the previous sections all deal with SELECT queries which fetch data from databases. For queries that do not bring back data, you should call the [[yii\db\Command::execute()]] method instead. For example, @@ -256,7 +256,7 @@ $db->createCommand()->batchInsert('user', ['name', 'age'], [ ``` -## Quoting Table and Column Names +## Quoting Table and Column Names When writing database-agnostic code, properly quote table and column names is often a headache because different databases have different name quoting rules. To overcome this problem, you may use the following @@ -275,7 +275,7 @@ $count = $db->createCommand("SELECT COUNT([[id]]) FROM {{%employee}}") ``` -### Using Table Prefix +### Using Table Prefix If most of your DB tables use some common prefix in their tables, you may use the table prefix feature supported by Yii DAO. @@ -306,7 +306,7 @@ $count = $db->createCommand("SELECT COUNT([[id]]) FROM {{%employee}}") ``` -## Performing Transactions +## Performing Transactions When running multiple related queries in a sequence, you may need to wrap them in a transaction to ensure the integrity and consistency of your database. If any of the queries fails, the database will be rolled back to the state as if @@ -350,7 +350,7 @@ will be triggered and caught, and the [[yii\db\Transaction::rollBack()|rollBack( the changes made by the queries prior to that failed query in the transaction. -### Specifying Isolation Levels +### Specifying Isolation Levels Yii also supports setting [isolation levels] for your transactions. By default, when starting a new transaction, it will use the isolation level set by your database system. You can override the default isolation level as follows, @@ -392,7 +392,7 @@ You have to call [[yii\db\Transaction::setIsolationLevel()]] in this case after [isolation levels]: http://en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_levels -### Nesting Transactions +### Nesting Transactions If your DBMS supports Savepoint, you may nest multiple transactions like the following: @@ -428,7 +428,7 @@ try { ``` -## Replication and Read-Write Splitting +## Replication and Read-Write Splitting Many DBMS support [database replication](http://en.wikipedia.org/wiki/Replication_(computing)#Database_replication) to get better database availability and faster server response time. With database replication, data are replicated @@ -587,7 +587,7 @@ $rows = $db->useMaster(function ($db) { You may also directly set `$db->enableSlaves` to be false to direct all queries to the master connection. -## Working with Database Schema +## Working with Database Schema Yii DAO provides a whole set of methods to let you manipulate database schema, such as creating new tables, dropping a column from a table, etc. These methods are listed as follows: diff --git a/docs/guide/helper-array.md b/docs/guide/helper-array.md index d601ffaf90e..21762387685 100644 --- a/docs/guide/helper-array.md +++ b/docs/guide/helper-array.md @@ -5,7 +5,7 @@ Additionally to [rich set of PHP array functions](http://php.net/manual/en/book. extra static methods allowing you to deal with arrays more efficiently. -## Getting Values +## Getting Values Retrieving values from an array, an object or a complex structure consisting of both using standard PHP is quite repetitive. You have to check if key exists with `isset` first, then if it does you're getting it, if not, @@ -64,7 +64,7 @@ After executing the code `$array` will contain `['options' => [1, 2]]` and `$typ `getValue` method, `remove` supports simple key names only. -## Checking Existence of Keys +## Checking Existence of Keys `ArrayHelper::keyExists` works the same way as [array_key_exists](http://php.net/manual/en/function.array-key-exists.php) except that it also supports case-insensitive key comparison. For example, @@ -83,7 +83,7 @@ if (!ArrayHelper::keyExists('username', $data1, false) || !ArrayHelper::keyExist } ``` -## Retrieving Columns +## Retrieving Columns Often you need to get a column of values from array of data rows or objects. Common example is getting a list of IDs. @@ -107,7 +107,7 @@ $result = ArrayHelper::getColumn($array, function ($element) { ``` -## Re-indexing Arrays +## Re-indexing Arrays In order to index an array according to a specified key, the `index` method can be used. The input array should be multidimensional or an array of objects. The key can be a key name of the sub-array, a property name of object, or @@ -134,7 +134,7 @@ $result = ArrayHelper::index($array, function ($element) { ``` -## Building Maps +## Building Maps In order to build a map (key-value pairs) from a multidimensional array or an array of objects you can use `map` method. The `$from` and `$to` parameters specify the key names or property names to set up the map. Optionally, one can further @@ -169,7 +169,7 @@ $result = ArrayHelper::map($array, 'id', 'name', 'class'); ``` -## Multidimensional Sorting +## Multidimensional Sorting `multisort` method helps to sort an array of objects or nested arrays by one or several keys. For example, @@ -209,7 +209,7 @@ Last argument is PHP sort flag that could take the same values as the ones passe PHP [sort()](http://php.net/manual/en/function.sort.php). -## Detecting Array Types +## Detecting Array Types It is handy to know whether an array is indexed or an associative. Here's an example: @@ -224,7 +224,7 @@ echo ArrayHelper::isAssociative($associative); ``` -## HTML Encoding and Decoding Values +## HTML Encoding and Decoding Values In order to encode or decode special characters in an array of strings into HTML entities you can use the following: @@ -237,7 +237,7 @@ Only values will be encoded by default. By passing second argument as `false` yo Encoding will use application charset and could be changed via third argument. -## Merging Arrays +## Merging Arrays ```php /** @@ -257,7 +257,7 @@ Encoding will use application charset and could be changed via third argument. ``` -## Converting Objects to Arrays +## Converting Objects to Arrays Often you need to convert an object or an array of objects into an array. The most common case is converting active record models in order to serve data arrays via REST API or use it otherwise. The following code could be used to do it: diff --git a/docs/guide/helper-html.md b/docs/guide/helper-html.md index d7ab760d4e0..e9f20b344f6 100644 --- a/docs/guide/helper-html.md +++ b/docs/guide/helper-html.md @@ -10,13 +10,13 @@ of Html helper which provides a set of static methods for handling commonly used with Html helper calls. -## Basics +## Basics Since building dynamic HTML by string concatenation is getting messy very fast, Yii provides a set of methods to manipulate tag options and build tags based on these options. -### Generating Tags +### Generating Tags The code generating a tag looks like the following: @@ -51,7 +51,7 @@ know about: `data-params='{"id":1,"name":"yii"}' data-status="ok"`. -### Forming CSS Classes and Styles +### Forming CSS Classes and Styles When building options for HTML tag we're often starting with defaults which we need to modify. In order to add or remove CSS class you can use the following: @@ -89,7 +89,7 @@ could be converted there and forth by using [[yii\helpers\Html::cssStyleFromArra method accepts an array of properties to remove. If it's going to be a single property it could be specified as string. -### Encoding and Decoding Content +### Encoding and Decoding Content In order for content to be displayed properly and securely in HTML special characters in the content should be encoded. In PHP it's done with [htmlspecialchars](http://www.php.net/manual/en/function.htmlspecialchars.php) and @@ -106,7 +106,7 @@ $decodedUserName = Html::decode($userName); ``` -## Forms +## Forms Dealing with forms markup is quite repetitive and error prone. Because of that there is a group of methods to help dealing with them. @@ -114,7 +114,7 @@ dealing with them. > Note: consider using [[yii\widgets\ActiveForm|ActiveForm]] in case you deal with models and need validation. -### Creating Forms +### Creating Forms Form could be opened with [[yii\helpers\Html::beginForm()|beginForm()]] method like the following: @@ -134,7 +134,7 @@ Closing form tag is simple: ``` -### Buttons +### Buttons In order to generate buttons you can use the following code: @@ -148,7 +148,7 @@ First argument for all three methods is button title and the second one is optio getting data from end user, encode it with [[yii\helpers\Html::encode()|Html::encode()]]. -### Input Fields +### Input Fields There are two groups on input methods. The ones starting with `active` and called active inputs and the ones not starting with it. Active inputs are taking data from model and attribute specified while in case of regular input data is specified @@ -213,7 +213,7 @@ If not, use radio list: ``` -### Labels and Errors +### Labels and Errors Same as inputs there are two methods for generating form labels. Active that's taking data from the model and non-active that accepts data directly: @@ -236,7 +236,7 @@ To display individual error: ``` -### Input Names and Values +### Input Names and Values There are methods to get names, ids and values for input fields based on the model. These are mainly used internally but could be handy sometimes: @@ -271,7 +271,7 @@ echo Html::getAttributeName('dates[0]'); ``` -## Styles and Scripts +## Styles and Scripts There two methods to generate tags wrapping embedded styles and scripts: @@ -319,7 +319,7 @@ Same as with CSS first argument specifies link to the file to be included. Optio In options you can specify `condition` in the same way as in options for `cssFile`. -## Hyperlinks +## Hyperlinks There's a method to generate hyperlink conveniently: @@ -338,7 +338,7 @@ In you need to generate `mailto` link you can use the following code: ``` -## Images +## Images In order to generate image tag use the following: @@ -354,7 +354,7 @@ Aside [aliases](concept-aliases.md) the first argument can accept routes, parame [Url::to()](helper-url.md) does. -## Lists +## Lists Unordered list could be generated like the following: diff --git a/docs/guide/helper-overview.md b/docs/guide/helper-overview.md index 2f9a64492c9..56b31f85f71 100644 --- a/docs/guide/helper-overview.md +++ b/docs/guide/helper-overview.md @@ -40,7 +40,7 @@ The following core helper classes are provided in the Yii releases: - VarDumper -Customizing Helper Classes +Customizing Helper Classes -------------------------- To customize a core helper class (e.g. [[yii\helpers\ArrayHelper]]), you should create a new class extending diff --git a/docs/guide/helper-url.md b/docs/guide/helper-url.md index ce6f4c617b3..40a1cc6b2c5 100644 --- a/docs/guide/helper-url.md +++ b/docs/guide/helper-url.md @@ -4,7 +4,7 @@ Url Helper Url helper provides a set of static methods for managing URLs. -## Getting Common URLs +## Getting Common URLs There are two methods you can use to get common URLs: home URL and base URL of the current request. In order to get home URL use the following: @@ -29,7 +29,7 @@ $httpsAbsoluteBaseUrl = Url::base('https'); The only parameter of the method works exactly the same as for `Url::home()`. -## Creating URLs +## Creating URLs In order to create URL to a given route use `Url::toRoute()` method. The method uses [[\yii\web\UrlManager]] to create a URL: @@ -147,7 +147,7 @@ echo Url::current(['id' => 100]); ``` -## Remember URLs +## Remember URLs There are cases when you need to remember URL and afterwards use it during processing of the one of sequential requests. It can be achieved in the following way: @@ -170,7 +170,7 @@ $url = Url::previous(); $productUrl = Url::previous('product'); ``` -## Checking Relative URLs +## Checking Relative URLs To find out if URL is relative i.e. it doesn't have host info part, you can use the following code: diff --git a/docs/guide/input-validation.md b/docs/guide/input-validation.md index 35f3f7ed86d..4a3e182d8fb 100644 --- a/docs/guide/input-validation.md +++ b/docs/guide/input-validation.md @@ -23,7 +23,7 @@ if ($model->validate()) { ``` -## Declaring Rules +## Declaring Rules To make `validate()` really work, you should declare validation rules for the attributes you plan to validate. This should be done by overriding the [[yii\base\Model::rules()]] method. The following example shows how @@ -95,7 +95,7 @@ an active attribute declared in `scenarios()` and is associated with one or mult declared in `rules()`. -### Customizing Error Messages +### Customizing Error Messages Most validators have default error messages that will be added to the model being validated when its attributes fail the validation. For example, the [[yii\validators\RequiredValidator|required]] validator will add @@ -120,7 +120,7 @@ to describe the validation failure when the value being validated is too big and You may configure these error messages like configuring other properties of validators in a validation rule. -### Validation Events +### Validation Events When [[yii\base\Model::validate()]] is called, it will call two methods that you may override to customize the validation process: @@ -134,7 +134,7 @@ the validation process: the validation is completed. -### Conditional Validation +### Conditional Validation To validate attributes only when certain conditions apply, e.g. the validation of one attribute depends on the value of another attribute you can use the [[yii\validators\Validator::when|when]] property @@ -174,7 +174,7 @@ function whose return value determines whether to apply the rule or not. For exa ``` -### Data Filtering +### Data Filtering User inputs often need to be filtered or preprocessed. For example, you may want to trim the spaces around the `username` input. You may use validation rules to achieve this goal. @@ -196,7 +196,7 @@ As you can see, these validation rules do not really validate the inputs. Instea and save them back to the attributes being validated. -### Handling Empty Inputs +### Handling Empty Inputs When input data are submitted from HTML forms, you often need to assign some default values to the inputs if they are empty. You can do so by using the [default](tutorial-core-validators.md#default) validator. For example, @@ -229,7 +229,7 @@ with a PHP callable. For example, `required`, and `trim` validators will handle empty inputs. -## Ad Hoc Validation +## Ad Hoc Validation Sometimes you need to do *ad hoc validation* for values that are not bound to any model. @@ -298,13 +298,13 @@ You may also access the dynamic attributes defined through the model instance, e `$model->name` and `$model->email`. -## Creating Validators +## Creating Validators Besides using the [core validators](tutorial-core-validators.md) included in the Yii releases, you may also create your own validators. You may create inline validators or standalone validators. -### Inline Validators +### Inline Validators An inline validator is one defined in terms of a model method or an anonymous function. The signature of the method/function is: @@ -366,7 +366,7 @@ class MyForm extends Model > ``` -### Standalone Validators +### Standalone Validators A standalone validator is a class extending [[yii\validators\Validator]] or its child class. You may implement its validation logic by overriding the [[yii\validators\Validator::validateAttribute()]] method. If an attribute @@ -395,7 +395,7 @@ instead of `validateAttribute()` and `validate()` because by default the latter by calling `validateValue()`. -## Client-Side Validation +## Client-Side Validation Client-side validation based on JavaScript is desirable when end users provide inputs via HTML forms, because it allows users to find out input errors faster and thus provides a better user experience. You may use or implement @@ -407,7 +407,7 @@ a validator that supports client-side validation *in addition to* server-side va described in the previous subsections. -### Using Client-Side Validation +### Using Client-Side Validation Many [core validators](tutorial-core-validators.md) support client-side validation out-of-the-box. All you need to do is just use [[yii\widgets\ActiveForm]] to build your HTML forms. For example, `LoginForm` below declares two @@ -470,7 +470,7 @@ validation of individual input fields by configuring their [[yii\widgets\ActiveF property to be false. -### Implementing Client-Side Validation +### Implementing Client-Side Validation To create a validator that supports client-side validation, you should implement the [[yii\validators\Validator::clientValidateAttribute()]] method which returns a piece of JavaScript code @@ -530,7 +530,7 @@ JS; > ] > ``` -### Deferred Validation +### Deferred Validation If you need to perform asynchronous client-side validation, you can create [Deferred objects](http://api.jquery.com/category/deferred-object/). For example, to perform a custom AJAX validation, you can use the following code: @@ -606,7 +606,7 @@ JS; ``` -### AJAX Validation +### AJAX Validation Some validations can only be done on the server side, because only the server has the necessary information. For example, to validate if a username is unique or not, it is necessary to check the user table on the server side. diff --git a/docs/guide/output-data-widgets.md b/docs/guide/output-data-widgets.md index e34f4b3c2b0..eca7c62bf70 100644 --- a/docs/guide/output-data-widgets.md +++ b/docs/guide/output-data-widgets.md @@ -188,7 +188,7 @@ You may specify various container HTML options by passing arrays to: - `filterOptions` - `contentOptions` -#### Data column +#### Data column Data column is used for displaying and sorting data. It is the default column type so the specifying class could be omitted when using it. diff --git a/docs/guide/output-formatter.md b/docs/guide/output-formatter.md index 77a72939858..1036b540212 100644 --- a/docs/guide/output-formatter.md +++ b/docs/guide/output-formatter.md @@ -57,7 +57,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // output: 1 января 2014 > because intl uses a 32bit UNIX timestamp internally. On a 64bit system the intl formatter is used in all cases if installed. -Configuring the formatter +Configuring the formatter ------------------------- The default formats used by the formatter methods can be adjusted using the properties of the [[yii\i18n\Formatter|formatter class]]. @@ -76,7 +76,7 @@ For more details about the available properties check out the [[yii\i18n\Formatt ], ``` -Formatting Date and Time values +Formatting Date and Time values ------------------------------- The formatter class provides different methods for formatting date and time values. These are: @@ -114,7 +114,7 @@ echo Yii::$app->formatter->asDate('now', 'yyyy-MM-dd'); // 2014-10-06 echo Yii::$app->formatter->asDate('now', 'php:Y-m-d'); // 2014-10-06 ``` -### Time zones +### Time zones When formatting date and time values, Yii will convert them to the [[yii\i18n\Formatter::timeZone|configured time zone]]. Therefore the input value is assumed to be in UTC unless a time zone is explicitly given. For this reason @@ -138,7 +138,7 @@ identifier like the second example in the code above. You can set [[yii\i18n\For > See also: [Setting up your PHP environment for internationalization](tutorial-i18n.md#setup-environment). -Formatting Numbers +Formatting Numbers ------------------ For formatting numeric values the formatter class provides the following methods: @@ -167,7 +167,7 @@ For example, to adjust the maximum and minimum value of fraction digits, you can ] ``` -Other formatters +Other formatters ---------------- In addition to date, time and number formatting, Yii provides a set of other useful formatters for different situations: @@ -189,7 +189,7 @@ In addition to date, time and number formatting, Yii provides a set of other use as `Yes` and `false` as `No`, translated to the current application language. You can adjust this by configuring the [[yii\i18n\Formatter::booleanFormat]] property. -`null`-values +`null`-values ------------- For values that are `null` in PHP, the formatter class will print a placeholder instead of an empty string which diff --git a/docs/guide/rest-authentication.md b/docs/guide/rest-authentication.md index 11541180c98..cad43cb47ce 100644 --- a/docs/guide/rest-authentication.md +++ b/docs/guide/rest-authentication.md @@ -115,7 +115,7 @@ If authentication fails, a response with HTTP status 401 will be sent back toget (such as a `WWW-Authenticate` header for HTTP Basic Auth). -## Authorization +## Authorization After a user is authenticated, you probably want to check if he or she has the permission to perform the requested action for the requested resource. This process is called *authorization* which is covered in detail in diff --git a/docs/guide/rest-controllers.md b/docs/guide/rest-controllers.md index f84751a08f8..518e0419310 100644 --- a/docs/guide/rest-controllers.md +++ b/docs/guide/rest-controllers.md @@ -25,7 +25,7 @@ will be described in detail in the next few sections: * User authorization in regarding to the requested action and resource. -## Creating Controller Classes +## Creating Controller Classes When creating a new controller class, a convention in naming the controller class is to use the type name of the resource and use singular form. For example, to serve user information, @@ -45,7 +45,7 @@ public function actionView($id) ``` -## Filters +## Filters Most RESTful API features provided by [[yii\rest\Controller]] are implemented in terms of [filters](structure-filters.md). In particular, the following filters will be executed in the order they are listed: @@ -76,14 +76,14 @@ public function behaviors() ``` -## Extending `ActiveController` +## Extending `ActiveController` If your controller class extends from [[yii\rest\ActiveController]], you should set its [[yii\rest\ActiveController::modelClass||modelClass]] property to be the name of the resource class that you plan to serve through this controller. The class must extend from [[yii\db\ActiveRecord]]. -### Customizing Actions +### Customizing Actions By default, [[yii\rest\ActiveController]] provides the following actions: @@ -120,7 +120,7 @@ public function prepareDataProvider() Please refer to the class references for individual action classes to learn what configuration options are available. -### Performing Access Check +### Performing Access Check When exposing resources through RESTful APIs, you often need to check if the current user has the permission to access and manipulate the requested resource(s). With [[yii\rest\ActiveController]], this can be done diff --git a/docs/guide/rest-error-handling.md b/docs/guide/rest-error-handling.md index 0f7ab509f5c..12e7a10d96f 100644 --- a/docs/guide/rest-error-handling.md +++ b/docs/guide/rest-error-handling.md @@ -43,7 +43,7 @@ The following list summarizes the HTTP status code that are used by the Yii REST * `500`: Internal server error. This could be caused by internal program errors. -## Customizing Error Response +## Customizing Error Response Sometimes you may want to customize the default error response format. For example, instead of relying on using different HTTP statuses to indicate different errors, you would like to always use 200 as HTTP status diff --git a/docs/guide/rest-quick-start.md b/docs/guide/rest-quick-start.md index 1f4e82ac6e9..1b1e71b80a4 100644 --- a/docs/guide/rest-quick-start.md +++ b/docs/guide/rest-quick-start.md @@ -22,7 +22,7 @@ Assume you want to expose the user data via RESTful APIs. The user data are stor and you have already created the [[yii\db\ActiveRecord|ActiveRecord]] class `app\models\User` to access the user data. -## Creating a Controller +## Creating a Controller First, create a controller class `app\controllers\UserController` as follows, @@ -41,7 +41,7 @@ The controller class extends from [[yii\rest\ActiveController]]. By specifying [ as `app\models\User`, the controller knows what model can be used for fetching and manipulating data. -## Configuring URL Rules +## Configuring URL Rules Then, modify the configuration about the `urlManager` component in your application configuration: @@ -60,7 +60,7 @@ The above configuration mainly adds a URL rule for the `user` controller so that can be accessed and manipulated with pretty URLs and meaningful HTTP verbs. -## Enabling JSON Input +## Enabling JSON Input To let the API accept input data in JSON format, configure the [[yii\web\Request::$parsers|parsers]] property of the `request` application component to use the [[yii\web\JsonParser]] for JSON input: @@ -77,7 +77,7 @@ the `request` application component to use the [[yii\web\JsonParser]] for JSON i `application/x-www-form-urlencoded` and `multipart/form-data` input formats. -## Trying it Out +## Trying it Out With the above minimal amount of effort, you have already finished your task of creating the RESTful APIs for accessing the user data. The APIs you have created include: @@ -187,7 +187,7 @@ For example, the URL `http://localhost/users?fields=id,email` will only return t > You can and should filter out these fields as described in the [Response Formatting](rest-response-formatting.md) section. -## Summary +## Summary Using the Yii RESTful API framework, you implement an API endpoint in terms of a controller action, and you use a controller to organize the actions that implement the endpoints for a single type of resource. diff --git a/docs/guide/rest-resources.md b/docs/guide/rest-resources.md index 37a470587a8..ea276fb1378 100644 --- a/docs/guide/rest-resources.md +++ b/docs/guide/rest-resources.md @@ -20,7 +20,7 @@ can specify what data may be returned via RESTful APIs. If the resource class do then all its public member variables will be returned. -## Fields +## Fields When including a resource in a RESTful API response, the resource needs to be serialized into a string. Yii breaks this process into two steps. First, the resource is converted into an array by [[yii\rest\Serializer]]. @@ -49,7 +49,7 @@ http://localhost/users?fields=id,email&expand=profile ``` -### Overriding `fields()` +### Overriding `fields()` By default, [[yii\base\Model::fields()]] returns all model attributes as fields, while [[yii\db\ActiveRecord::fields()]] only returns the attributes which have been populated from DB. @@ -96,7 +96,7 @@ public function fields() > to filter out `auth_key`, `password_hash` and `password_reset_token`. -### Overriding `extraFields()` +### Overriding `extraFields()` By default, [[yii\base\Model::extraFields()]] returns nothing, while [[yii\db\ActiveRecord::extraFields()]] returns the names of the relations that have been populated from DB. @@ -134,7 +134,7 @@ the request with `http://localhost/users?fields=id,email&expand=profile` may ret ``` -## Links +## Links [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS), an abbreviation for Hypermedia as the Engine of Application State, promotes that RESTful APIs should return information that allow clients to discover actions supported for the returned @@ -177,7 +177,7 @@ to the user, for example, ``` -## Collections +## Collections Resource objects can be grouped into *collections*. Each collection contains a list of resource objects of the same type. diff --git a/docs/guide/rest-response-formatting.md b/docs/guide/rest-response-formatting.md index 0a417042819..a88304da46a 100644 --- a/docs/guide/rest-response-formatting.md +++ b/docs/guide/rest-response-formatting.md @@ -13,7 +13,7 @@ with response formatting: the [[yii\web\Response::formatters|response]] application component. -## Content Negotiation +## Content Negotiation Yii supports content negotiation via the [[yii\filters\ContentNegotiator]] filter. The RESTful API base controller class [[yii\rest\Controller]] is equipped with this filter under the name of `contentNegotiator`. @@ -81,7 +81,7 @@ The keys of the `formats` property are the supported MIME types, while the value response format names which must be supported in [[yii\web\Response::formatters]]. -## Data Serializing +## Data Serializing As we have described above, [[yii\rest\Serializer]] is the central piece responsible for converting resource objects or collections into arrays. It recognizes objects implementing [[yii\base\ArrayableInterface]] as diff --git a/docs/guide/runtime-handling-errors.md b/docs/guide/runtime-handling-errors.md index 560a2b22c6e..a662a922045 100644 --- a/docs/guide/runtime-handling-errors.md +++ b/docs/guide/runtime-handling-errors.md @@ -14,7 +14,7 @@ The [[yii\web\ErrorHandler|error handler]] is enabled by default. You may disabl `YII_ENABLE_ERROR_HANDLER` to be false in the [entry script](structure-entry-scripts.md) of your application. -## Using Error Handler +## Using Error Handler The [[yii\web\ErrorHandler|error handler]] is registered as an [application component](structure-application-components.md) named `errorHandler`. You may configure it in the application configuration like the following: @@ -59,7 +59,7 @@ throw new NotFoundHttpException(); ``` -## Customizing Error Display +## Customizing Error Display The [[yii\web\ErrorHandler|error handler]] adjusts the error display according to the value of the constant `YII_DEBUG`. When `YII_DEBUG` is true (meaning in debug mode), the error handler will display exceptions with detailed call @@ -80,7 +80,7 @@ You can configure the [[yii\web\ErrorHandler::errorView|errorView]] and [[yii\we properties of the error handler to use your own views to customize the error display. -### Using Error Actions +### Using Error Actions A better way of customizing the error display is to use dedicated error [actions](structure-controllers.md). To do so, first configure the [[yii\web\ErrorHandler::errorAction|errorAction]] property of the `errorHandler` @@ -148,7 +148,7 @@ the following variables if the error action is defined as [[yii\web\ErrorAction] the error action and the error view are already defined for you. -### Customizing Error Response Format +### Customizing Error Response Format The error handler displays errors according to the format setting of the [response](runtime-responses.md). If the the [[yii\web\Response::format|response format]] is `html`, it will use the error or exception view diff --git a/docs/guide/runtime-logging.md b/docs/guide/runtime-logging.md index ee3da155e09..ebfd053efa0 100644 --- a/docs/guide/runtime-logging.md +++ b/docs/guide/runtime-logging.md @@ -14,7 +14,7 @@ Using the Yii logging framework involves the following steps: In this section, we will mainly describe the first two steps. -## Log Messages +## Log Messages Recording log messages is as simple as calling one of the following logging methods: @@ -56,7 +56,7 @@ enough messages are logged or when the application ends, the logger object will [[yii\log\Dispatcher|message dispatcher]] to send recorded log messages to the registered [log targets](#log-targets). -## Log Targets +## Log Targets A log target is an instance of the [[yii\log\Target]] class or its child class. It filters the log messages by their severity levels and categories and then exports them to some medium. For example, a [[yii\log\DbTarget|database target]] @@ -114,7 +114,7 @@ learn how to configure and use them. In the following, we will describe the features common to all log targets. -### Message Filtering +### Message Filtering For each log target, you can configure its [[yii\log\Target::levels|levels]] and [[yii\log\Target::categories|categories]] properties to specify which severity levels and categories of the messages the target should process. @@ -167,7 +167,7 @@ under the categories whose names match either `yii\db\*` or `yii\web\HttpExcepti the [[yii\web\NotFoundHttpException]] will cause an error message of category `yii\web\HttpException:404`. -### Message Formatting +### Message Formatting Log targets export the filtered log messages in a certain format. For example, if you install a log target of the class [[yii\log\FileTarget]], you may find a log message similar to the following in the @@ -216,7 +216,7 @@ Or if you want to implement your own way of providing context information, you m [[yii\log\Target::getContextMessage()]] method. -### Message Trace Level +### Message Trace Level During development, it is often desirable to see where each log message is coming from. This can be achieved by configuring the [[yii\log\Dispatcher::traceLevel|traceLevel]] property of the `log` component like the following: @@ -242,7 +242,7 @@ will be included. or when debugging an application. -### Message Flushing and Exporting +### Message Flushing and Exporting As aforementioned, log messages are maintained in an array by the [[yii\log\Logger|logger object]]. To limit the memory consumption by this array, the logger will flush the recorded messages to the [log targets](#log-targets) @@ -302,7 +302,7 @@ return [ > Note: Frequent message flushing and exporting will degrade the performance of your application. -### Toggling Log Targets +### Toggling Log Targets You can enable or disable a log target by configuring its [[yii\log\Target::enabled|enabled]] property. You may do so via the log target configuration or by the following PHP statement in your code: @@ -333,7 +333,7 @@ return [ ``` -### Creating New Targets +### Creating New Targets Creating a new log target class is very simple. You mainly need to implement the [[yii\log\Target::export()]] method sending the content of the [[yii\log\Target::messages]] array to a designated medium. You may call the @@ -341,7 +341,7 @@ sending the content of the [[yii\log\Target::messages]] array to a designated me log target classes included in the Yii release. -## Performance Profiling +## Performance Profiling Performance profiling is a special type of message logging that is used to measure the time taken by certain code blocks and find out what are the performance bottlenecks. For example, the [[yii\db\Command]] class uses diff --git a/docs/guide/runtime-requests.md b/docs/guide/runtime-requests.md index 07d3e6d59db..ef98c1f4fa9 100644 --- a/docs/guide/runtime-requests.md +++ b/docs/guide/runtime-requests.md @@ -7,7 +7,7 @@ request object via the `request` [application component](structure-application-c of [[yii\web\Request]], by default. In this section, we will describe how you can make use of this component in your applications. -## Request Parameters +## Request Parameters To get request parameters, you can call [[yii\web\Request::get()|get()]] and [[yii\web\Request::post()|post()]] methods of the `request` component. They return the values of `$_GET` and `$_POST`, respectively. For example, @@ -57,7 +57,7 @@ $param = $request->getBodyParam('id'); You can customize the way how these parameters are parsed by configuring the [[yii\web\Request::parsers]] property. -## Request Methods +## Request Methods You can get the HTTP method used by the current request via the expression `Yii::$app->request->method`. A whole set of boolean properties are also provided for you to check if the current method is of certain type. @@ -72,7 +72,7 @@ if ($request->isPost) { // the request method is POST } if ($request->isPut) { // the request method is PUT } ``` -## Request URLs +## Request URLs The `request` component provides many ways of inspecting the currently requested URL. @@ -93,7 +93,7 @@ parts of this URL as summarized in the following: * [[yii\web\Request::serverPort|serverPort]]: returns 80, which is the port used by the Web server. -## HTTP Headers +## HTTP Headers You can get the HTTP header information through the [[yii\web\HeaderCollection|header collection]] returned by the [[yii\web\Request::headers]] property. For example, @@ -128,7 +128,7 @@ and returns the most appropriate language. on top of the properties and methods described above. -## Client Information +## Client Information You can get the host name and IP address of the client machine through [[yii\web\Request::userHost|userHost]] and [[yii\web\Request::userIP|userIP]], respectively. For example, diff --git a/docs/guide/runtime-responses.md b/docs/guide/runtime-responses.md index ab0b2727a40..f4a0b90dff1 100644 --- a/docs/guide/runtime-responses.md +++ b/docs/guide/runtime-responses.md @@ -12,7 +12,7 @@ objects and send them to end users as we will explain in the following. In this section, we will describe how to compose and send responses to end users. -## Status Code +## Status Code One of the first things you would do when building a response is to state whether the request is successfully handled. This is done by setting the [[yii\web\Response::statusCode]] property which can take one of the valid @@ -55,7 +55,7 @@ throw new \yii\web\HttpException(402); ``` -## HTTP Headers +## HTTP Headers You can send HTTP headers by manipulating the [[yii\web\Response::headers|header collection]] in the `response` component. For example, @@ -77,7 +77,7 @@ $values = $headers->remove('Pragma'); the [[yii\web\Response::send()]] method is called. -## Response Body +## Response Body Most responses should have a body which gives the content that you want to show to end users. @@ -157,7 +157,7 @@ public function actionInfo() [dependency injection](concept-di-container.md) to apply a common configuration to your new response objects. -## Browser Redirection +## Browser Redirection Browser redirection relies on sending a `Location` HTTP header. Because this feature is commonly used, Yii provides some special support for it. @@ -197,7 +197,7 @@ redirect the browser accordingly. (by registering the [[yii\web\YiiAsset]] asset bundle), you do not need to write anything to support AJAX redirection. -## Sending Files +## Sending Files Like browser redirection, file sending is another feature that relies on specific HTTP headers. Yii provides a set of methods to support various file sending needs. They all have built-in support for the HTTP range header. @@ -237,7 +237,7 @@ for some popular Web servers: - Cherokee: [X-Sendfile and X-Accel-Redirect](http://www.cherokee-project.com/doc/other_goodies.html#x-sendfile) -## Sending Response +## Sending Response The content in a response is not sent to the user until the [[yii\web\Response::send()]] method is called. By default, this method will be called automatically at the end of [[yii\base\Application::run()]]. You can, however, diff --git a/docs/guide/runtime-routing.md b/docs/guide/runtime-routing.md index e8d36a8eb5c..2a88ad78f04 100644 --- a/docs/guide/runtime-routing.md +++ b/docs/guide/runtime-routing.md @@ -36,7 +36,7 @@ And if the created URL is requested later, it will still be parsed back into the ``` -## URL Formats +## URL Formats The [[yii\web\UrlManager|URL manager]] supports two URL formats: the default URL format and the pretty URL format. @@ -55,7 +55,7 @@ You may switch between the two URL formats by toggling the [[yii\web\UrlManager: property of the [[yii\web\UrlManager|URL manager]] without changing any other application code. -## Routing +## Routing Routing involves two steps. In the first step, the incoming request is parsed into a route and the associated query parameters. In the second step, a [controller action](structure-controllers.md) corresponding to the parsed route @@ -91,7 +91,7 @@ Among the above steps, if any error occurs, a [[yii\web\NotFoundHttpException]] the failure of the routing process. -### Default Route +### Default Route When a request is parsed into an empty route, the so-called *default route* will be used, instead. By default, the default route is `site/index`, which refers to the `index` action of the `site` controller. You may @@ -106,7 +106,7 @@ in the application configuration like the following: ``` -### `catchAll` Route +### `catchAll` Route Sometimes, you may want to put your Web application in maintenance mode temporarily and display the same informational page for all requests. There are many ways to accomplish this goal. But one of the simplest @@ -125,7 +125,7 @@ The `catchAll` property should take an array whose first element specifies a rou the rest of the elements (name-value pairs) specify the parameters to be [bound to the action](structure-controllers.md#action-parameters). -## Creating URLs +## Creating URLs Yii provides a helper method [[yii\helpers\Url::to()]] to create various kinds of URLs from given routes and their associated query parameters. For example, @@ -230,7 +230,7 @@ echo Url::previous(); ``` -## Using Pretty URLs +## Using Pretty URLs To use pretty URLs, configure the `urlManager` component in the application configuration like the following: @@ -271,7 +271,7 @@ The rest of the properties are optional. However, their configuration shown abov [Installation](start-installation.md#recommended-apache-configuration) section. -### URL Rules +### URL Rules A URL rule is an instance of [[yii\web\UrlRule]] or its child class. Each URL rule consists of a pattern used for matching the path info part of URLs, a route, and a few query parameters. A URL rule can be used to parse a request @@ -322,7 +322,7 @@ By default if you do not specify the `class` option for a rule configuration, it class [[yii\web\UrlRule]]. -### Named Parameters +### Named Parameters A URL rule can be associated with a few named query parameters which are specified in the pattern in the format of ``, where `ParamName` specifies the parameter name and `RegExp` is an optional regular @@ -370,7 +370,7 @@ And when the rules are used to create URLs: and all parameters as the query string part. -### Parameterizing Routes +### Parameterizing Routes You can embed parameter names in the route of a URL rule. This allows a URL rule to be used for matching multiple routes. For example, the following rules embed `controller` and `action` parameters in the routes. @@ -420,7 +420,7 @@ The above rule can be used to parse or create any of the following URLs: Without using optional parameters, you would have to create 4 rules to achieve the same result. -### Rules with Server Names +### Rules with Server Names It is possible to include Web server names in the patterns of URL rules. This is mainly useful when your application should behave differently for different Web server names. For example, the following rules will parse the URL @@ -447,7 +447,7 @@ will parse the URL `http://en.example.com/posts` into the route `post/index` and to be deployed under any directory without the need to change your application code. -### URL Suffixes +### URL Suffixes You may want to add suffixes to the URLs for various purposes. For example, you may add `.html` to the URLs so that they look like URLs for static HTML pages; you may also add `.json` to the URLs to indicate the expected content type @@ -505,7 +505,7 @@ contains a customized URL rule which uses `.json` as its suffix instead of the g ``` -### HTTP Methods +### HTTP Methods When implementing RESTful APIs, it is commonly needed that the same URL be parsed into different routes according to the HTTP methods being used. This can be easily achieved by prefixing the supported HTTP methods to the patterns of @@ -529,7 +529,7 @@ be parsed into `post/create`, while a request for `GET post/100` will be parsed For more details, please refer to the [Routing](rest-routing.md) section about developing RESTful APIs. -### Customizing Rules +### Customizing Rules In the previous examples, URL rules are mainly declared in terms of pattern-route pairs. This is a commonly used shortcut format. In certain scenarios, you may want to customize a URL rule by configuring its other properties, such @@ -552,7 +552,7 @@ example is extracted from the [URL Suffixes](#url-suffixes) subsection, class [[yii\web\UrlRule]]. -### Adding Rules Dynamically +### Adding Rules Dynamically URL rules can be dynamically added to the [[yii\web\UrlManager|URL manager]]. This is often needed by redistributable [modules](structure-modules.md) which want to manage their own URL rules. In order for the dynamically added rules @@ -573,7 +573,7 @@ Note that you should also list these modules in [[yii\web\Application::bootstrap [bootstrapping](runtime-bootstrapping.md) process. -### Creating Rule Classes +### Creating Rule Classes Despite the fact that the default [[yii\web\UrlRule]] class is flexible enough for the majority of projects, there are situations when you have to create your own rule classes. For example, in a car dealer Web site, you may want @@ -631,7 +631,7 @@ And use the new rule class in the [[yii\web\UrlManager::rules]] configuration: ``` -## Performance Consideration +## Performance Consideration When developing a complex Web application, it is important to optimize URL rules so that it takes less time to parse requests and create URLs. diff --git a/docs/guide/runtime-sessions-cookies.md b/docs/guide/runtime-sessions-cookies.md index 70f725aa44a..68f7a427fc7 100644 --- a/docs/guide/runtime-sessions-cookies.md +++ b/docs/guide/runtime-sessions-cookies.md @@ -6,14 +6,14 @@ through the global variables `$_SESSION` and `$_COOKIE`, respectively. Yii encap and thus allows you to access them in an object-oriented fashion with additional useful enhancements. -## Sessions +## Sessions Like [requests](runtime-requests.md) and [responses](runtime-responses.md), you can get access to sessions via the `session` [application component](structure-application-components.md) which is an instance of [[yii\web\Session]], by default. -### Opening and Closing Sessions +### Opening and Closing Sessions To open and close a session, you can do the following: @@ -37,7 +37,7 @@ You can call [[yii\web\Session::open()|open()]] and [[yii\web\Session::close()|c without causing errors; internally the methods will first check if the session is already open. -### Accessing Session Data +### Accessing Session Data To access the data stored in session, you can do the following: @@ -124,7 +124,7 @@ an array as a single session variable, you store each array element as a session key prefix with other array elements. -### Custom Session Storage +### Custom Session Storage The default [[yii\web\Session]] class stores session data as files on the server. Yii also provides the following session classes implementing different session storage: @@ -179,7 +179,7 @@ where 'BLOB' refers to the BLOB-type of your preferred DBMS. Below are the BLOB length 64 instead of 40. -### Flash Data +### Flash Data Flash data is a special kind of session data which, once set in one request, will only be available during the next request and will be automatically deleted afterwards. Flash data is most commonly used to implement @@ -231,7 +231,7 @@ $alerts = $session->getFlash('alerts'); the invocation of these two methods. -## Cookies +## Cookies Yii represents each cookie as an object of [[yii\web\Cookie]]. Both [[yii\web\Request]] and [[yii\web\Response]] maintain a collection of cookies via the property named `cookies`. The cookie collection in the former represents @@ -239,7 +239,7 @@ the cookies submitted in a request, while the cookie collection in the latter re be sent to the user. -### Reading Cookies +### Reading Cookies You can get the cookies in the current request using the following code: @@ -266,7 +266,7 @@ if (isset($cookies['language'])) ... ``` -### Sending Cookies +### Sending Cookies You can send cookies to end users using the following code: @@ -296,7 +296,7 @@ the risk of a client side script accessing the protected cookie (if the browser the [httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) for more details. -### Cookie Validation +### Cookie Validation When you are reading and sending cookies through the `request` and `response` components as shown in the last two subsections, you enjoy the added security of cookie validation which protects cookies from being modified diff --git a/docs/guide/start-databases.md b/docs/guide/start-databases.md index c9e7e278ffb..57c301b2a76 100644 --- a/docs/guide/start-databases.md +++ b/docs/guide/start-databases.md @@ -17,7 +17,7 @@ Note that in order to finish this section, you should have basic knowledge and e In particular, you should know how to create a database, and how to execute SQL statements using a DB client tool. -Preparing the Database +Preparing the Database ---------------------- To begin, create a database named `yii2basic`, from which you will fetch data in your application. @@ -46,7 +46,7 @@ INSERT INTO `country` VALUES ('US','United States',278357000); At this point, you have a database named `yii2basic`, and within it a `country` table with three columns, containing ten rows of data. -Configuring a DB Connection +Configuring a DB Connection --------------------------- Before proceeding, make sure you have installed both the [PDO](http://www.php.net/manual/en/book.pdo.php) PHP extension and @@ -79,7 +79,7 @@ The DB connection configured above can be accessed in the application code via t For more information, please refer to the [Configurations](concept-configurations.md) section. -Creating an Active Record +Creating an Active Record ------------------------- To represent and fetch the data in the `country` table, create an [Active Record](db-active-record.md)-derived @@ -126,7 +126,7 @@ $country->save(); You may find more detailed information in the [Active Record](db-active-record.md) section. Alternatively, you may also interact with a database using a lower-level data accessing method called [Data Access Objects](db-dao.md). -Creating an Action +Creating an Action ------------------ To expose the country data to end users, you need to create a new action. Instead of placing the new action in the `site` @@ -182,7 +182,7 @@ At the end of the code, the `index` action renders a view named `index`, and pas information to it. -Creating a View +Creating a View --------------- Under the `views` directory, first create a sub-directory named `country`. This folder will be used to hold all the @@ -213,7 +213,7 @@ The `LinkPager` widget displays a list of page buttons. Clicking on any of them in the corresponding page. -Trying it Out +Trying it Out ------------- To see how all of the above code works, use your browser to access the following URL: @@ -245,7 +245,7 @@ Behind the scenes, [[yii\data\Pagination|Pagination]] is providing all of the ne for display. -Summary +Summary ------- In this section, you learned how to work with a database. You also learned how to fetch and display diff --git a/docs/guide/start-forms.md b/docs/guide/start-forms.md index 1c06cdef70d..df16c9c2df6 100644 --- a/docs/guide/start-forms.md +++ b/docs/guide/start-forms.md @@ -15,7 +15,7 @@ Through this tutorial, you will learn how to: * Build an HTML form in a [view](structure-views.md) -Creating a Model +Creating a Model ---------------- The data to be requested from the user will be represented by an `EntryForm` model class as shown below and @@ -76,7 +76,7 @@ if ($model->validate()) { ``` -Creating an Action +Creating an Action ------------------ Next, you'll need to create an `entry` action in the `site` controller that will use the new model. The process @@ -132,7 +132,7 @@ be rendered, wherein the HTML form will be shown, along with any validation erro to avoid [form resubmission problems](http://en.wikipedia.org/wiki/Post/Redirect/Get). -Creating Views +Creating Views -------------- Finally, create two view files named `entry-confirm` and `entry`. These will be rendered by the `entry` action, @@ -180,7 +180,7 @@ and the second for the "email" data. After the input fields, the [[yii\helpers\H is called to generate a submit button. -Trying it Out +Trying it Out ------------- To see how it works, use your browser to access the following URL: @@ -201,7 +201,7 @@ displaying the data that you just entered. -### Magic Explained +### Magic Explained You may wonder how the HTML form works behind the scene, because it seems almost magical that it can display a label for each input field and show error messages if you do not enter the data correctly @@ -232,7 +232,7 @@ the following code: view code into reusable widgets to simplify view development in future. -Summary +Summary ------- In this section of the guide, you have touched every part in the MVC design pattern. You have learned how diff --git a/docs/guide/start-gii.md b/docs/guide/start-gii.md index ba0596b3864..45f84d34d64 100644 --- a/docs/guide/start-gii.md +++ b/docs/guide/start-gii.md @@ -12,7 +12,7 @@ Through this tutorial, you will learn how to: * Customize the code generated by Gii -Starting Gii +Starting Gii ------------ [Gii](tool-gii.md) is provided in Yii as a [module](structure-modules.md). You can enable Gii @@ -56,7 +56,7 @@ http://hostname/index.php?r=gii ![Gii](images/start-gii.png) -Generating an Active Record Class +Generating an Active Record Class --------------------------------- To use Gii to generate an Active Record class, select the "Model Generator" (by clicking the link on the Gii index page). Then fill out the form as follows: @@ -80,7 +80,7 @@ Next, you will see a confirmation page indicating the code has been successfully generated. If you had an existing file, you'll also see a message indicating that it was overwritten with the newly generated code. -Generating CRUD Code +Generating CRUD Code -------------------- CRUD stands for Create, Read, Update, and Delete, representing the four common tasks taken with data on most Web sites. To create CRUD functionality using Gii, select the "CRUD Generator" (by clicking the link on the Gii index page). For the "country" example, fill out the resulting form as follows: @@ -99,7 +99,7 @@ If you previously created the `controllers/CountryController.php` and `views/country/index.php` files (in the databases section of the guide), check the "overwrite" box to replace them. (The previous versions did not have full CRUD support.) -Trying it Out +Trying it Out ------------- To see how it works, use your browser to access the following URL: @@ -130,7 +130,7 @@ or to customize them: the [Gii](tool-gii.md) section. -Summary +Summary ------- In this section, you have learned how to use Gii to generate the code that implements complete diff --git a/docs/guide/start-hello.md b/docs/guide/start-hello.md index 4cd9bc82d3d..8767b6d0a1e 100644 --- a/docs/guide/start-hello.md +++ b/docs/guide/start-hello.md @@ -15,7 +15,7 @@ Through this tutorial, you will learn three things: 3. how an application dispatches requests to [actions](structure-controllers.md#creating-actions). -Creating an Action +Creating an Action ------------------ For the "Hello" task, you will create a `say` [action](structure-controllers.md#creating-actions) that reads @@ -70,7 +70,7 @@ so that it can be used there. The rendering result is returned by the action met by the application and displayed to the end user in the browser (as part of a complete HTML page). -Creating a View +Creating a View --------------- [Views](structure-views.md) are scripts you write to generate a response's content. @@ -96,7 +96,7 @@ In fact, the `say` view is just a PHP script that is executed by the [[yii\web\C The content printed by the view script will be returned to the application as the response's result. The application will in turn output this result to the end user. -Trying it Out +Trying it Out ------------- After creating the action and the view, you may access the new page by accessing the following URL: @@ -131,7 +131,7 @@ the `SiteController::actionSay()` method will be called to handle the request. to the controller class name `PostCommentController`. -Summary +Summary ------- In this section, you have touched the controller and view parts of the MVC design pattern. diff --git a/docs/guide/start-installation.md b/docs/guide/start-installation.md index 5003e596bca..6dd82422aed 100644 --- a/docs/guide/start-installation.md +++ b/docs/guide/start-installation.md @@ -18,7 +18,7 @@ to develop applications with multiple tiers. recommend you stick to the Basic Application Template for its simplicity yet sufficient functionalities. -Installing via Composer +Installing via Composer ----------------------- If you do not already have Composer installed, you may do so by following the instructions at @@ -56,7 +56,7 @@ once for all. The second command installs Yii in a directory named `basic`. You > Note that the development version of Yii should not be used for production as it may break your running code. -Installing from an Archive File +Installing from an Archive File ------------------------------- Installing Yii from an archive file involves three steps: @@ -72,7 +72,7 @@ Installing Yii from an archive file involves three steps: ``` -Other Installation Options +Other Installation Options -------------------------- The above installation instructions show how to install Yii, which also creates a basic Web application that works out of the box. @@ -87,7 +87,7 @@ But there are other installation options available: you may consider installing the [Advanced Application Template](tutorial-advanced-app.md). -Verifying the Installation +Verifying the Installation -------------------------- After installation, you can use your browser to access the installed Yii application with the following URL: @@ -117,7 +117,7 @@ the [PDO PHP Extension](http://www.php.net/manual/en/pdo.installation.php) and a (such as `pdo_mysql` for MySQL databases), if your application needs a database. -Configuring Web Servers +Configuring Web Servers ----------------------- > Info: You may skip this subsection for now if you are just test driving Yii with no intention @@ -144,7 +144,7 @@ to modify its Web server configuration, you may still adjust the structure of yo the [Shared Hosting Environment](tutorial-shared-hosting.md) section for more details. -### Recommended Apache Configuration +### Recommended Apache Configuration Use the following configuration in Apache's `httpd.conf` file or within a virtual host configuration. Note that you should replace `path/to/basic/web` with the actual path for `basic/web`. @@ -167,7 +167,7 @@ DocumentRoot "path/to/basic/web" ``` -### Recommended Nginx Configuration +### Recommended Nginx Configuration To use [Nginx](http://wiki.nginx.org/), you should install PHP as an [FPM SAPI](http://php.net/install.fpm). You may use the following Nginx configuration, replacing `path/to/basic/web` with the actual path for diff --git a/docs/guide/start-workflow.md b/docs/guide/start-workflow.md index ef34a8f2003..5cfe7fd1bf9 100644 --- a/docs/guide/start-workflow.md +++ b/docs/guide/start-workflow.md @@ -12,7 +12,7 @@ how the code is organized, and how the application handles requests in general. For your needs, please adjust the URLs in our descriptions accordingly. -Functionality +Functionality ------------- The basic application installed contains four pages: @@ -30,7 +30,7 @@ You should also see a toolbar at the bottom of the browser window. This is a useful [debugger tool](tool-debugger.md) provided by Yii to record and display a lot of debugging information, such as log messages, response statuses, the database queries run, and so on. -Application Structure +Application Structure --------------------- The most important directories and files in your application are (assuming the application's root directory is `basic`): @@ -72,7 +72,7 @@ and dispatches the request to the MVC elements. [Widgets](structure-widgets.md) to help build complex and dynamic user interface elements. -Request Lifecycle +Request Lifecycle ----------------- The following diagram shows how an application handles a request. diff --git a/docs/guide/structure-application-components.md b/docs/guide/structure-application-components.md index c101268147e..8da721b2669 100644 --- a/docs/guide/structure-application-components.md +++ b/docs/guide/structure-application-components.md @@ -51,7 +51,7 @@ For example, and use it when needed. -## Bootstrapping Components +## Bootstrapping Components As mentioned above, an application component will only be instantiated when it is being accessed the first time. If it is not accessed at all during a request, it will not be instantiated. Sometimes, however, you may want @@ -74,7 +74,7 @@ For example, the following application configuration makes sure the `log` compon ``` -## Core Application Components +## Core Application Components Yii defines a set of *core* application components with fixed IDs and default configurations. For example, the [[yii\web\Application::request|request]] component is used to collect information about diff --git a/docs/guide/structure-applications.md b/docs/guide/structure-applications.md index 22654e6debb..6f43b1212c8 100644 --- a/docs/guide/structure-applications.md +++ b/docs/guide/structure-applications.md @@ -13,7 +13,7 @@ There are two types of applications: [[yii\web\Application|Web applications]] an Web requests while the latter console command requests. -## Application Configurations +## Application Configurations When an [entry script](structure-entry-scripts.md) creates an application, it will load a [configuration](concept-configurations.md) and apply it to the application, like the following: @@ -35,7 +35,7 @@ very complex, they usually are kept in [configuration files](concept-configurati like the `web.php` file in the above example. -## Application Properties +## Application Properties There are many important application properties that you should configure in application configurations. These properties typically describe the environment that applications are running in. @@ -43,20 +43,20 @@ For example, applications need to know how to load [controllers](structure-contr where to store temporary files, etc. In the following, we will summarize these properties. -### Required Properties +### Required Properties In any application, you should at least configure two properties: [[yii\base\Application::id|id]] and [[yii\base\Application::basePath|basePath]]. -#### [[yii\base\Application::id|id]] +#### [[yii\base\Application::id|id]] The [[yii\base\Application::id|id]] property specifies a unique ID that differentiates an application from others. It is mainly used programmatically. Although not a requirement, for best interoperability it is recommended that you use alphanumeric characters only when specifying an application ID. -#### [[yii\base\Application::basePath|basePath]] +#### [[yii\base\Application::basePath|basePath]] The [[yii\base\Application::basePath|basePath]] property specifies the root directory of an application. It is the directory that contains all protected source code of an application system. Under this directory, @@ -72,13 +72,13 @@ paths (e.g. the runtime path). For this reason, a path alias named `@app` is pre path. Derived paths may then be formed using this alias (e.g. `@app/runtime` to refer to the runtime directory). -### Important Properties +### Important Properties The properties described in this subsection often need to be configured because they differ across different applications. -#### [[yii\base\Application::aliases|aliases]] +#### [[yii\base\Application::aliases|aliases]] This property allows you to define a set of [aliases](concept-aliases.md) in terms of an array. The array keys are alias names, and the array values are the corresponding path definitions. @@ -97,7 +97,7 @@ This property is provided such that you can define aliases in terms of applicati the method calls [[Yii::setAlias()]]. -#### [[yii\base\Application::bootstrap|bootstrap]] +#### [[yii\base\Application::bootstrap|bootstrap]] This is a very useful property. It allows you to specify an array of components that should be run during the application [[yii\base\Application::bootstrap()|bootstrapping process]]. @@ -172,7 +172,7 @@ if (YII_ENV_DEV) { for each request, the same set of components need to be run. So use bootstrapping components judiciously. -#### [[yii\web\Application::catchAll|catchAll]] +#### [[yii\web\Application::catchAll|catchAll]] This property is supported by [[yii\web\Application|Web applications]] only. It specifies a [controller action](structure-controllers.md) which should handle all user requests. This is mainly @@ -192,7 +192,7 @@ The rest of the array elements (key-value pairs) specify the parameters to be bo ``` -#### [[yii\base\Application::components|components]] +#### [[yii\base\Application::components|components]] This is the single most important property. It allows you to register a list of named components called [application components](structure-application-components.md) that you can use in other places. For example, @@ -220,7 +220,7 @@ using the expression `\Yii::$app->ComponentID`. Please read the [Application Components](structure-application-components.md) section for details. -#### [[yii\base\Application::controllerMap|controllerMap]] +#### [[yii\base\Application::controllerMap|controllerMap]] This property allows you to map a controller ID to an arbitrary controller class. By default, Yii maps controller IDs to controller classes based on a [convention](#controllerNamespace) (e.g. the ID `post` would be mapped @@ -246,7 +246,7 @@ The array keys of this property represent the controller IDs, while the array va controller class names or [configurations](concept-configurations.md). -#### [[yii\base\Application::controllerNamespace|controllerNamespace]] +#### [[yii\base\Application::controllerNamespace|controllerNamespace]] This property specifies the default namespace under which controller classes should be located. It defaults to `app\controllers`. If a controller ID is `post`, by convention the corresponding controller class name (without @@ -264,7 +264,7 @@ In case you want to break the convention as described above, you may configure t property. -#### [[yii\base\Application::language|language]] +#### [[yii\base\Application::language|language]] This property specifies the language in which the application should display content to end users. The default value of this property is `en`, meaning English. You should configure this property @@ -281,7 +281,7 @@ For example, `en` stands for English, while `en-US` stands for English (United S More details about this property can be found in the [Internationalization](tutorial-i18n.md) section. -#### [[yii\base\Application::modules|modules]] +#### [[yii\base\Application::modules|modules]] This property specifies the [modules](structure-modules.md) that the application contains. @@ -306,7 +306,7 @@ being the module IDs. For example, Please refer to the [Modules](structure-modules.md) section for more details. -#### [[yii\base\Application::name|name]] +#### [[yii\base\Application::name|name]] This property specifies the application name that may be displayed to end users. Unlike the [[yii\base\Application::id|id]] property which should take a unique value, the value of this property is mainly for @@ -315,7 +315,7 @@ display purpose and does not need to be unique. You do not always need to configure this property if none of your code is using it. -#### [[yii\base\Application::params|params]] +#### [[yii\base\Application::params|params]] This property specifies an array of globally accessible application parameters. Instead of using hardcoded numbers and strings everywhere in your code, it is a good practice to define them as application parameters @@ -341,7 +341,7 @@ Later if you decide to change the thumbnail size, you only need to modify it in without touching any dependent code. -#### [[yii\base\Application::sourceLanguage|sourceLanguage]] +#### [[yii\base\Application::sourceLanguage|sourceLanguage]] This property specifies the language that the application code is written in. The default value is `'en-US'`, meaning English (United States). You should configure this property if the text content in your code is not in English. @@ -353,7 +353,7 @@ while `en-US` stands for English (United States). More details about this property can be found in the [Internationalization](tutorial-i18n.md) section. -#### [[yii\base\Application::timeZone|timeZone]] +#### [[yii\base\Application::timeZone|timeZone]] This property is provided as an alternative way of setting the default time zone of PHP runtime. By configuring this property, you are essentially calling the PHP function @@ -366,25 +366,25 @@ By configuring this property, you are essentially calling the PHP function ``` -#### [[yii\base\Application::version|version]] +#### [[yii\base\Application::version|version]] This property specifies the version of the application. It defaults to `'1.0'`. You do not always need to configure this property if none of your code is using it. -### Useful Properties +### Useful Properties The properties described in this subsection are not commonly configured because their default values stipulate common conventions. However, you may still configure them in case you want to break the conventions. -#### [[yii\base\Application::charset|charset]] +#### [[yii\base\Application::charset|charset]] This property specifies the charset that the application uses. The default value is `'UTF-8'` which should be kept as is for most applications unless you are working with some legacy systems that use a lot of non-unicode data. -#### [[yii\base\Application::defaultRoute|defaultRoute]] +#### [[yii\base\Application::defaultRoute|defaultRoute]] This property specifies the [route](runtime-routing.md) that an application should use when a request does not specify one. The route may consist of child module ID, controller ID, and/or action ID. @@ -400,7 +400,7 @@ For [[yii\console\Application|console applications]], the default value is `'hel without providing any arguments, it will display the help information. -#### [[yii\base\Application::extensions|extensions]] +#### [[yii\base\Application::extensions|extensions]] This property specifies the list of [extensions](structure-extensions.md) that are installed and used by the application. By default, it will take the array returned by the file `@vendor/yiisoft/extensions.php`. The `extensions.php` file @@ -434,7 +434,7 @@ process, a `bootstrap` element may be specified with a bootstrapping class name array. An extension may also define a few [aliases](concept-aliases.md). -#### [[yii\base\Application::layout|layout]] +#### [[yii\base\Application::layout|layout]] This property specifies the name of the default layout that should be used when rendering a [view](structure-views.md). The default value is `'main'`, meaning the layout file `main.php` under the [layout path](#layoutPath) should be used. @@ -444,7 +444,7 @@ the default layout file can be represented as the path alias `@app/views/layouts You may configure this property to be `false` if you want to disable layout by default, although this is very rare. -#### [[yii\base\Application::layoutPath|layoutPath]] +#### [[yii\base\Application::layoutPath|layoutPath]] This property specifies the path where layout files should be looked for. The default value is the `layouts` sub-directory under the [view path](#viewPath). If the [view path](#viewPath) is taking @@ -453,7 +453,7 @@ its default value, the default layout path can be represented as the path alias You may configure it as a directory or a path [alias](concept-aliases.md). -#### [[yii\base\Application::runtimePath|runtimePath]] +#### [[yii\base\Application::runtimePath|runtimePath]] This property specifies the path where temporary files, such as log files, cache files, can be generated. The default value is the directory represented by the alias `@app/runtime`. @@ -465,13 +465,13 @@ by end users because the temporary files under it may contain sensitive informat To simplify accessing to this path, Yii has predefined a path alias named `@runtime` for it. -#### [[yii\base\Application::viewPath|viewPath]] +#### [[yii\base\Application::viewPath|viewPath]] This property specifies the root directory where view files are located. The default value is the directory represented by the alias `@app/views`. You may configure it as a directory or a path [alias](concept-aliases.md). -#### [[yii\base\Application::vendorPath|vendorPath]] +#### [[yii\base\Application::vendorPath|vendorPath]] This property specifies the vendor directory managed by [Composer](http://getcomposer.org). It contains all third party libraries used by your application, including the Yii framework. The default value is @@ -483,13 +483,13 @@ this property, make sure you also adjust the Composer configuration accordingly. To simplify accessing to this path, Yii has predefined a path alias named `@vendor` for it. -#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] +#### [[yii\console\Application::enableCoreCommands|enableCoreCommands]] This property is supported by [[yii\console\Application|console applications]] only. It specifies whether the core commands included in the Yii release should be enabled. The default value is `true`. -## Application Events +## Application Events An application triggers several events during the lifecycle of handling an request. You may attach event handlers to these events in application configurations like the following, @@ -514,7 +514,7 @@ after the application instance is created. For example, }); ``` -### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] +### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] This event is triggered *before* an application handles a request. The actual event name is `beforeRequest`. @@ -523,7 +523,7 @@ to insert your custom code via the event mechanism to intercept the request hand in the event handler, you may dynamically set the [[yii\base\Application::language]] property based on some parameters. -### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] +### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] This event is triggered *after* an application finishes handling a request but *before* sending the response. The actual event name is `afterRequest`. @@ -535,7 +535,7 @@ Note that the [[yii\web\Response|response]] component also triggers some events response content to end users. Those events are triggered *after* this event. -### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] +### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] This event is triggered *before* running every [controller action](structure-controllers.md). The actual event name is `beforeAction`. @@ -561,7 +561,7 @@ triggering this event, followed by modules (if any), and finally controllers. If sets [[yii\base\ActionEvent::isValid]] to be `false`, all the following events will NOT be triggered. -### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] +### [[yii\base\Application::EVENT_AFTER_ACTION|EVENT_AFTER_ACTION]] This event is triggered *after* running every [controller action](structure-controllers.md). The actual event name is `afterAction`. @@ -587,7 +587,7 @@ as for that of `beforeAction`. That is, controllers are the first objects trigge followed by modules (if any), and finally applications. -## Application Lifecycle +## Application Lifecycle ![Application Lifecycle](images/application-lifecycle.png) diff --git a/docs/guide/structure-assets.md b/docs/guide/structure-assets.md index 5ef6bf8e39b..451878eeddc 100644 --- a/docs/guide/structure-assets.md +++ b/docs/guide/structure-assets.md @@ -11,14 +11,14 @@ the new version of the asset files. In this tutorial, we will describe the power provided in Yii. -## Asset Bundles +## Asset Bundles Yii manages assets in the unit of *asset bundle*. An asset bundle is simply a collection of assets located in a directory. When you register an asset bundle in a [view](structure-views.md), it will include the CSS and JavaScript files in the bundle in the rendered Web page. -## Defining Asset Bundles +## Defining Asset Bundles Asset bundles are specified as PHP classes extending from [[yii\web\AssetBundle]]. The name of a bundle is simply its corresponding fully qualified PHP class name (without the leading backslash). An asset bundle class should @@ -90,7 +90,7 @@ explanation about the properties of [[yii\web\AssetBundle]] can be found in the This is only used if you specify the [[yii\web\AssetBundle::sourcePath|sourcePath]] property. -### Asset Locations +### Asset Locations Assets, based on their location, can be classified as: @@ -120,7 +120,7 @@ property when defining asset bundle classes for them. to removal. -### Asset Dependencies +### Asset Dependencies When you include multiple CSS or JavaScript files in a Web page, they have to follow a certain order to avoid overriding issues. For example, if you are using a jQuery UI widget in a Web page, you have to make sure @@ -135,7 +135,7 @@ those files in the two dependent bundles. Asset dependencies are transitive. This means if bundle A depends on B which depends on C, A will depend on C, too. -### Asset Options +### Asset Options You can specify the [[yii\web\AssetBundle::cssOptions|cssOptions]] and [[yii\web\AssetBundle::jsOptions|jsOptions]] properties to customize the way that CSS and JavaScript files are included in a page. The values of these properties @@ -206,7 +206,7 @@ The above example defines an asset bundle for the ["fontawesome" package](http:/ the `beforeCopy` publishing option, only the `fonts` and `css` subdirectories will be published. -### Bower and NPM Assets +### Bower and NPM Assets Most JavaScript/CSS packages are managed by [Bower](http://bower.io/) and/or [NPM](https://www.npmjs.org/). If your application or extension is using such a package, it is recommended that you follow these steps to manage @@ -224,7 +224,7 @@ the assets in the library: uses `@bower/jquery/dist` instead of `@bower/jquery`. -## Using Asset Bundles +## Using Asset Bundles To use an asset bundle, register it with a [view](structure-views.md) by calling the [[yii\web\AssetBundle::register()]] method. For example, in a view template you can register an asset bundle like the following: @@ -248,7 +248,7 @@ the registered bundles and the order of the assets listed in the [[yii\web\Asset properties. -### Customizing Asset Bundles +### Customizing Asset Bundles Yii manages asset bundles through an application component named `assetManager` which is implemented by [[yii\web\AssetManager]]. By configuring the [[yii\web\AssetManager::bundles]] property, it is possible to customize the behavior of an asset bundle. @@ -310,7 +310,7 @@ return [ You can also disable *all* asset bundles by setting [[yii\web\AssetManager::bundles]] as `false`. -### Asset Mapping +### Asset Mapping Sometimes you may want to "fix" incorrect/incompatible asset file paths used in multiple asset bundles. For example, bundle A uses `jquery.min.js` version 1.11.1, and bundle B uses `jquery.js` version 2.1.1. While you can @@ -341,7 +341,7 @@ For example, the asset file `my/path/to/jquery.js` matches the key `jquery.js`. should be either absolute URLs or paths relative to [[yii\web\AssetManager::basePath]]. -### Asset Publishing +### Asset Publishing As aforementioned, if an asset bundle is located in a directory that is not Web accessible, its assets will be copied to a Web directory when the bundle is being registered with a view. This process is called *asset publishing*, and is done @@ -370,7 +370,7 @@ when it is being published. This is faster than file copying and can also ensure always up-to-date. -## Commonly Used Asset Bundles +## Commonly Used Asset Bundles The core Yii code has defined many asset bundles. Among them, the following bundles are commonly used and may be referenced in your application or extension code. @@ -388,7 +388,7 @@ creating your own versions. If the default setting of these bundles do not satis as described in the [Customizing Asset Bundle](#customizing-asset-bundles) subsection. -## Asset Conversion +## Asset Conversion Instead of directly writing CSS and/or JavaScript code, developers often write them in some extended syntax and use special tools to convert it into CSS/JavaScript. For example, for CSS code you may use [LESS](http://lesscss.org/) @@ -461,7 +461,7 @@ in the commands will be replaced with the source asset file paths and the target asset bundles rather than the original files. -## Combining and Compressing Assets +## Combining and Compressing Assets A Web page can include many CSS and/or JavaScript files. To reduce the number of HTTP requests and the overall download size of these files, a common practice is to combine and compress multiple CSS/JavaScript files into @@ -488,7 +488,7 @@ the new asset bundle for the group that the original bundle belongs to. And as a asset files are included in the page, instead of the original ones. -### An Example +### An Example Let's use an example to further explain the above approach. @@ -563,7 +563,7 @@ That is, the asset bundle configuration array is saved in `assets-prod.php` for `assets-dev.php` for non-production mode. -### Using the `asset` Command +### Using the `asset` Command Yii provides a console command named `asset` to automate the approach that we just described. diff --git a/docs/guide/structure-controllers.md b/docs/guide/structure-controllers.md index 7e0c12407a6..7f175ba7328 100644 --- a/docs/guide/structure-controllers.md +++ b/docs/guide/structure-controllers.md @@ -8,7 +8,7 @@ controllers will analyze incoming request data, pass them to [models](structure- into [views](structure-views.md), and finally generate outgoing responses. -## Actions +## Actions Controllers are composed by *actions* which are the most basic units that end users can address and request for execution. A controller can have one or multiple actions. @@ -62,7 +62,7 @@ the browser to the `view` action with the ID of the newly created model. Otherwi the `create` view through which users can provide the needed input. -## Routes +## Routes End users address actions through the so-called *routes*. A route is a string that consists of the following parts: @@ -88,7 +88,7 @@ will be executed. For more details on how routes are resolved into actions, plea the [Routing and URL Generation](runtime-routing.md) section. -## Creating Controllers +## Creating Controllers In [[yii\web\Application|Web applications]], controllers should extend from [[yii\web\Controller]] or its child classes. Similarly in [[yii\console\Application|console applications]], controllers should extend from @@ -105,7 +105,7 @@ class SiteController extends Controller ``` -### Controller IDs +### Controller IDs Usually, a controller is designed to handle the requests regarding a particular type of resource. For this reason, controller IDs are often nouns referring to the types of the resources that they are handling. @@ -121,7 +121,7 @@ Valid characters for subdirectory prefixes include: English letters in lower and forward slashes, where forward slashes are used as separators for multi-level subdirectories (e.g. `panels/admin`). -### Controller Class Naming +### Controller Class Naming Controller class names can be derived from controller IDs according to the following rules: @@ -149,7 +149,7 @@ in `@app/controllers/admin/Post2CommentController.php`. to organize your controllers into several categories and you do not want to use [modules](structure-modules.md). -### Controller Map +### Controller Map You can configure [[yii\base\Application::controllerMap|controller map]] to overcome the constraints of the controller IDs and class names described above. This is mainly useful when you are using some @@ -174,7 +174,7 @@ You may configure [[yii\base\Application::controllerMap|controller map]] in the ``` -### Default Controller +### Default Controller Each application has a default controller specified via the [[yii\base\Application::defaultRoute]] property. When a request does not specify a [route](#ids-routes), the route specified by this property will be used. @@ -190,7 +190,7 @@ You may change the default controller with the following [application configurat ``` -## Creating Actions +## Creating Actions Creating actions can be as simple as defining the so-called *action methods* in a controller class. An action method is a *public* method whose name starts with the word `action`. The return value of an action method represents @@ -216,7 +216,7 @@ class SiteController extends Controller ``` -### Action IDs +### Action IDs An action is often designed to perform a particular manipulation about a resource. For this reason, action IDs are usually verbs, such as `view`, `update`, etc. @@ -232,7 +232,7 @@ if you have no intention to reuse these actions. Standalone actions, on the othe created to be used in different controllers or be redistributed as [extensions](structure-extensions.md). -### Inline Actions +### Inline Actions Inline actions refer to the actions that are defined in terms of action methods as we just described. @@ -255,7 +255,7 @@ if you plan to reuse the same action in different places, or if you want to redi you should consider defining it as a *standalone action*. -### Standalone Actions +### Standalone Actions Standalone actions are defined in terms of action classes extending [[yii\base\Action]] or its child classes. For example, in the Yii releases, there are [[yii\web\ViewAction]] and [[yii\web\ErrorAction]], both of which @@ -304,7 +304,7 @@ class HelloWorldAction extends Action ``` -### Action Results +### Action Results The return value of an action method or the `run()` method of a standalone action is significant. It stands for the result of the corresponding action. @@ -331,7 +331,7 @@ public function actionForward() ``` -### Action Parameters +### Action Parameters The action methods for inline actions and the `run()` methods for standalone actions can take parameters, called *action parameters*. Their values are obtained from requests. For [[yii\web\Application|Web applications]], @@ -382,7 +382,7 @@ The above examples mainly show how action parameters work for Web applications. please refer to the [Console Commands](tutorial-console.md) section for more details. -### Default Action +### Default Action Each controller has a default action specified via the [[yii\base\Controller::defaultAction]] property. When a [route](#ids-routes) contains the controller ID only, it implies that the default action of @@ -408,7 +408,7 @@ class SiteController extends Controller ``` -## Controller Lifecycle +## Controller Lifecycle When processing a request, an [application](structure-applications.md) will create a controller based on the requested [route](#routes). The controller will then undergo the following lifecycle @@ -434,7 +434,7 @@ to fulfill the request: 6. The application will take the action result and assign it to the [response](runtime-responses.md). -## Best Practices +## Best Practices In a well-designed application, controllers are often very thin with each action containing only a few lines of code. If your controller is rather complicated, it usually indicates that you should refactor it and move some code diff --git a/docs/guide/structure-entry-scripts.md b/docs/guide/structure-entry-scripts.md index 09da9b2f6db..c2e76da0072 100644 --- a/docs/guide/structure-entry-scripts.md +++ b/docs/guide/structure-entry-scripts.md @@ -23,7 +23,7 @@ Entry scripts mainly do the following work: * Call [[yii\base\Application::run()]] to process the incoming request. -## Web Applications +## Web Applications The following is the code in the entry script for the [Basic Web Application Template](start-installation.md). @@ -47,7 +47,7 @@ $config = require(__DIR__ . '/../config/web.php'); ``` -## Console Applications +## Console Applications Similarly, the following is the code for the entry script of a console application: @@ -83,7 +83,7 @@ exit($exitCode); ``` -## Defining Constants +## Defining Constants Entry scripts are the best place for defining global constants. Yii supports the following three constants: diff --git a/docs/guide/structure-extensions.md b/docs/guide/structure-extensions.md index deee0c779bf..6930795164b 100644 --- a/docs/guide/structure-extensions.md +++ b/docs/guide/structure-extensions.md @@ -11,7 +11,7 @@ other people your great work. that can be used without Yii, we will refer to them using the term "package" or "library". -## Using Extensions +## Using Extensions To use an extension, you need to install it first. Most extensions are distributed as [Composer](https://getcomposer.org/) packages which can be installed by taking the following two simple steps: @@ -66,7 +66,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120) > Info: Extension classes are autoloaded by the [Yii class autoloader](concept-autoloading.md). -### Installing Extensions Manually +### Installing Extensions Manually In some rare occasions, you may want to install some or all extensions manually, rather than relying on Composer. To do so, you should: @@ -90,7 +90,7 @@ are under the `myext` namespace, then you can include the following code in your ``` -## Creating Extensions +## Creating Extensions You may consider creating an extension when you feel the need to share with other people your great code. An extension can contain any code you like, such as a helper class, a widget, a module, etc. @@ -108,7 +108,7 @@ Below are the basic steps you may follow to create an extension as a Composer pa other users can find and install your extension using Composer. -### `composer.json` +### `composer.json` Each Composer package must have a `composer.json` file in its root directory. The file contains the metadata about the package. You may find complete specification about this file in the [Composer Manual](https://getcomposer.org/doc/01-basic-usage.md#composer-json-project-setup). @@ -155,7 +155,7 @@ The following example shows the `composer.json` file for the `yiisoft/yii2-imagi ``` -#### Package Name +#### Package Name Each Composer package should have a package name which uniquely identifies the package among all others. The format of package names is `vendorName/projectName`. For example, in the package name `yiisoft/yii2-imagine`, @@ -167,7 +167,7 @@ We recommend you prefix `yii2-` to the project name for packages representing Yi `myname/yii2-mywidget`. This will allow users to more easily tell whether a package is a Yii 2 extension. -#### Package Type +#### Package Type It is important that you specify the package type of your extension as `yii2-extension` so that the package can be recognized as a Yii extension when being installed. @@ -177,7 +177,7 @@ will be automatically updated to include the information about the new extension can know which extensions are installed (the information can be accessed via [[yii\base\Application::extensions]]). -#### Dependencies +#### Dependencies Your extension depends on Yii (of course). So you should list it (`yiisoft/yii2`) in the `require` entry in `composer.json`. If your extension also depends on other extensions or third-party libraries, you should list them as well. @@ -207,7 +207,7 @@ These two directories can also be referred to using the shorter aliases `@bower/ For more details about asset management, please refer to the [Assets](structure-assets.md#bower-npm-assets) section. -#### Class Autoloading +#### Class Autoloading In order for your classes to be autoloaded by the Yii class autoloader or the Composer class autoloader, you should specify the `autoload` entry in the `composer.json` file, like shown below: @@ -231,13 +231,13 @@ an [alias](concept-aliases.md#extension-aliases) that refers to the directory co For example, the above `autoload` declaration will correspond to an alias named `@yii/imagine`. -### Recommended Practices +### Recommended Practices Because extensions are meant to be used by other people, you often need to make an extra effort during development. Below we introduce some common and recommended practices in creating high quality extensions. -#### Namespaces +#### Namespaces To avoid name collisions and make the classes in your extension autoloadable, you should use namespaces and name the classes in your extension by following the [PSR-4 standard](http://www.php-fig.org/psr/psr-4/) or @@ -250,7 +250,7 @@ extension, we use `yii\imagine` as the namespace for its classes. Do not use `yii`, `yii2` or `yiisoft` as your vendor name. These names are reserved for use by the Yii core code. -#### Bootstrapping Classes +#### Bootstrapping Classes Sometimes, you may want your extension to execute some code during the [bootstrapping process](runtime-bootstrapping.md) stage of an application. For example, your extension may want to respond to the application's `beginRequest` event @@ -294,7 +294,7 @@ and call its [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] method dur every request. -#### Working with Databases +#### Working with Databases Your extension may need to access databases. Do not assume that the applications that use your extension will always use `Yii::$db` as the DB connection. Instead, you should declare a `db` property for the classes that require DB access. @@ -308,7 +308,7 @@ If your extension needs to create specific DB tables or make changes to DB schem - avoid using [Active Record](db-active-record.md) in the migrations. -#### Using Assets +#### Using Assets If your extension is a widget or a module, chances are that it may require some [assets](structure-assets.md) to work. For example, a module may display some pages which contain images, JavaScript, and CSS. Because the files of an @@ -323,7 +323,7 @@ We recommend you use the second approach so that your extension can be more easi Please refer to the [Assets](structure-assets.md) section for more details about how to work with assets in general. -#### Internationalization and Localization +#### Internationalization and Localization Your extension may be used by applications supporting different languages! Therefore, if your extension displays content to end users, you should try to [internationalize and localize](tutorial-i18n.md) it. In particular, @@ -337,7 +337,7 @@ content to end users, you should try to [internationalize and localize](tutorial For more details, please refer to the [Internationalization](tutorial-i18n.md) section. -#### Testing +#### Testing You want your extension to run flawlessly without bringing problems to other people. To reach this goal, you should test your extension before releasing it to public. @@ -348,13 +348,13 @@ everything is in good shape. Yii provides testing support, which can help you to acceptance tests and functionality tests. For more details, please refer to the [Testing](test-overview.md) section. -#### Versioning +#### Versioning You should give each release of your extension a version number (e.g. `1.0.1`). We recommend you follow the [semantic versioning](http://semver.org) practice when determining what version numbers should be used. -#### Releasing +#### Releasing To let other people know about your extension, you need to release it to the public. @@ -386,7 +386,7 @@ help other people learn about and use your extension: the [core framework code style](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style). -## Core Extensions +## Core Extensions Yii provides the following core extensions that are developed and maintained by the Yii developer team. They are all registered on [Packagist](https://packagist.org/) and can be easily installed as described in the diff --git a/docs/guide/structure-filters.md b/docs/guide/structure-filters.md index 28a24d557cd..caf698fb54f 100644 --- a/docs/guide/structure-filters.md +++ b/docs/guide/structure-filters.md @@ -9,7 +9,7 @@ A filter may consist of a pre-filter (filtering logic applied *before* actions) *after* actions). -## Using Filters +## Using Filters Filters are essentially a special kind of [behaviors](concept-behaviors.md). Therefore, using filters is the same as [using behaviors](concept-behaviors.md#attaching-behaviors). You can declare filters in a controller class @@ -61,7 +61,7 @@ When multiple filters are configured for a single action, they are applied accor - Apply filters declared in the application in the reverse order they are listed in `behaviors()`. -## Creating Filters +## Creating Filters To create a new action filter, extend from [[yii\base\ActionFilter]] and override the [[yii\base\ActionFilter::beforeAction()|beforeAction()]] and/or [[yii\base\ActionFilter::afterAction()|afterAction()]] @@ -97,13 +97,13 @@ class ActionTimeFilter extends ActionFilter ``` -## Core Filters +## Core Filters Yii provides a set of commonly used filters, found primarily under the `yii\filters` namespace. In the following, we will briefly introduce these filters. -### [[yii\filters\AccessControl|AccessControl]] +### [[yii\filters\AccessControl|AccessControl]] AccessControl provides simple access control based on a set of [[yii\filters\AccessControl::rules|rules]]. In particular, before an action is executed, AccessControl will examine the listed rules and find the first one @@ -139,7 +139,7 @@ public function behaviors() For more details about access control in general, please refer to the [Authorization](security-authorization.md) section. -### Authentication Method Filters +### Authentication Method Filters Authentication method filters are used to authenticate a user using various methods, such as [HTTP Basic Auth](http://en.wikipedia.org/wiki/Basic_access_authentication), [OAuth 2](http://oauth.net/2/). @@ -167,7 +167,7 @@ Authentication method filters are commonly used in implementing RESTful APIs. Fo RESTful [Authentication](rest-authentication.md) section. -### [[yii\filters\ContentNegotiator|ContentNegotiator]] +### [[yii\filters\ContentNegotiator|ContentNegotiator]] ContentNegotiator supports response format negotiation and application language negotiation. It will try to determine the response format and/or language by examining `GET` parameters and `Accept` HTTP header. @@ -229,7 +229,7 @@ use yii\web\Response; -### [[yii\filters\HttpCache|HttpCache]] +### [[yii\filters\HttpCache|HttpCache]] HttpCache implements client-side caching by utilizing the `Last-Modified` and `Etag` HTTP headers. For example, @@ -255,7 +255,7 @@ public function behaviors() Please refer to the [HTTP Caching](caching-http.md) section for more details about using HttpCache. -### [[yii\filters\PageCache|PageCache]] +### [[yii\filters\PageCache|PageCache]] PageCache implements server-side caching of whole pages. In the following example, PageCache is applied to the `index` action to cache the whole page for maximum 60 seconds or until the count of entries in the `post` @@ -287,14 +287,14 @@ public function behaviors() Please refer to the [Page Caching](caching-page.md) section for more details about using PageCache. -### [[yii\filters\RateLimiter|RateLimiter]] +### [[yii\filters\RateLimiter|RateLimiter]] RateLimiter implements a rate limiting algorithm based on the [leaky bucket algorithm](http://en.wikipedia.org/wiki/Leaky_bucket). It is primarily used in implementing RESTful APIs. Please refer to the [Rate Limiting](rest-rate-limiting.md) section for details about using this filter. -### [[yii\filters\VerbFilter|VerbFilter]] +### [[yii\filters\VerbFilter|VerbFilter]] VerbFilter checks if the HTTP request methods are allowed by the requested actions. If not allowed, it will throw an HTTP 405 exception. In the following example, VerbFilter is declared to specify a typical set of allowed @@ -320,7 +320,7 @@ public function behaviors() } ``` -### [[yii\filters\Cors|Cors]] +### [[yii\filters\Cors|Cors]] Cross-origin resource sharing [CORS](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) is a mechanism that allows many resources (e.g. fonts, JavaScript, etc.) on a Web page to be requested from another domain outside the domain the resource originated from. diff --git a/docs/guide/structure-models.md b/docs/guide/structure-models.md index 7d175e34cd5..1bb2d54c3a9 100644 --- a/docs/guide/structure-models.md +++ b/docs/guide/structure-models.md @@ -21,7 +21,7 @@ Please refer to the relevant documentation for more details about these advanced components built to support [[yii\base\Model]], it is usually the preferable base class for a model. -## Attributes +## Attributes Models represent business data in terms of *attributes*. Each attribute is like a publicly accessible property of a model. The method [[yii\base\Model::attributes()]] specifies what attributes a model class has. @@ -54,7 +54,7 @@ foreach ($model as $name => $value) { ``` -### Defining Attributes +### Defining Attributes By default, if your model class extends directly from [[yii\base\Model]], all its *non-static public* member variables are attributes. For example, the `ContactForm` model class below has four attributes: `name`, `email`, @@ -82,7 +82,7 @@ override the magic methods such as `__get()`, `__set()` so that the attributes c normal object properties. -### Attribute Labels +### Attribute Labels When displaying values or getting input for attributes, you often need to display some labels associated with attributes. For example, given an attribute named `firstName`, you may want to display a label `First Name` @@ -151,7 +151,7 @@ is being used in, you may return different labels for the same attribute. in models is often very convenient and can result in very clean and reusable code. -## Scenarios +## Scenarios A model may be used in different *scenarios*. For example, a `User` model may be used to collect user login inputs, but it may also be used for the user registration purpose. In different scenarios, a model may use different @@ -226,7 +226,7 @@ You can, however, use it for other purposes. For example, you may declare [attri differently based on the current scenario. -## Validation Rules +## Validation Rules When the data for a model is received from end users, it should be validated to make sure it satisfies certain rules (called *validation rules*, also known as *business rules*). For example, given a `ContactForm` model, @@ -298,7 +298,7 @@ An attribute will be validated if and only if it is an active attribute declared is associated with one or multiple active rules declared in `rules()`. -## Massive Assignment +## Massive Assignment Massive assignment is a convenient way of populating a model with user inputs using a single line of code. It populates the attributes of a model by assigning the input data directly to the [[yii\base\Model::$attributes]] @@ -321,7 +321,7 @@ $model->body = isset($data['body']) ? $data['body'] : null; ``` -### Safe Attributes +### Safe Attributes Massive assignment only applies to the so-called *safe attributes* which are the attributes listed in [[yii\base\Model::scenarios()]] for the current [[yii\base\Model::scenario|scenario]] of a model. @@ -362,7 +362,7 @@ public function rules() ``` -### Unsafe Attributes +### Unsafe Attributes As described above, the [[yii\base\Model::scenarios()]] method serves for two purposes: determining which attributes should be validated, and determining which attributes are safe. In some rare cases, you may want to validate @@ -387,7 +387,7 @@ $model->secret = $secret; ``` -## Data Exporting +## Data Exporting Models often need to be exported in different formats. For example, you may want to convert a collection of models into JSON or Excel format. The exporting process can be broken down into two independent steps. @@ -413,7 +413,7 @@ In fact, it is the default way of exporting models in RESTful Web service develo the [Response Formatting](rest-response-formatting.md). -### Fields +### Fields A field is simply a named element in the array that is obtained by calling the [[yii\base\Model::toArray()]] method of a model. @@ -474,7 +474,7 @@ public function fields() > to filter out `auth_key`, `password_hash` and `password_reset_token`. -## Best Practices +## Best Practices Models are the central places to represent business data, rules and logic. They often need to be reused in different places. In a well-designed application, models are usually much fatter than diff --git a/docs/guide/structure-modules.md b/docs/guide/structure-modules.md index 37e6364f7fd..5cec96177a8 100644 --- a/docs/guide/structure-modules.md +++ b/docs/guide/structure-modules.md @@ -8,7 +8,7 @@ often viewed as mini-applications. Modules differ from [applications](structure- modules cannot be deployed alone and must reside within applications. -## Creating Modules +## Creating Modules A module is organized as a directory which is called the [[yii\base\Module::basePath|base path]] of the module. Within the directory, there are sub-directories, such as `controllers`, `models`, `views`, which hold controllers, @@ -27,7 +27,7 @@ forum/ ``` -### Module Classes +### Module Classes Each module should have a unique module class which extends from [[yii\base\Module]]. The class should be located directly under the module's [[yii\base\Module::basePath|base path]] and should be [autoloadable](concept-autoloading.md). @@ -80,7 +80,7 @@ return [ ``` -### Controllers in Modules +### Controllers in Modules When creating controllers in a module, a convention is to put the controller classes under the `controllers` sub-namespace of the namespace of the module class. This also means the controller class files should be @@ -104,7 +104,7 @@ property. In case some of the controllers are outside of this namespace, you may by configuring the [[yii\base\Module::controllerMap]] property, similar to [what you do in an application](structure-applications.md#controller-map). -### Views in Modules +### Views in Modules Views in a module should be put in the `views` directory within the module's [[yii\base\Module::basePath|base path]]. For views rendered by a controller in the module, they should be put under the directory `views/ControllerID`, @@ -118,7 +118,7 @@ the [[yii\base\Module::layout]] property to point to the layout name. If you do the application's layout will be used instead. -## Using Modules +## Using Modules To use a module in an application, simply configure the application by listing the module in the [[yii\base\Application::modules|modules]] property of the application. The following code in the @@ -140,7 +140,7 @@ represents a *module ID* which uniquely identifies the module among all modules array value is a [configuration](concept-configurations.md) for creating the module. -### Routes +### Routes Like accessing controllers in an application, [routes](structure-controllers.md#routes) are used to address controllers in a module. A route for a controller within a module must begin with the module ID followed by @@ -151,7 +151,7 @@ will determine which controller/action should be used. This means a route `forum controller in the `forum` module. -### Accessing Modules +### Accessing Modules Within a module, you may often need to get the instance of the [module class](#module-classes) so that you can access the module ID, module parameters, module components, etc. You can do so by using the following statement: @@ -190,7 +190,7 @@ $maxPostCount = $module->params['maxPostCount']; ``` -### Bootstrapping Modules +### Bootstrapping Modules Some modules may need to be run for every request. The [[yii\debug\Module|debug]] module is such an example. To do so, list the IDs of such modules in the [[yii\base\Application::bootstrap|bootstrap]] property of the application. @@ -210,7 +210,7 @@ For example, the following application configuration makes sure the `debug` modu ``` -## Nested Modules +## Nested Modules Modules can be nested in unlimited levels. That is, a module can contain another module which can contain yet another module. We call the former *parent module* while the latter *child module*. Child modules must be declared @@ -244,7 +244,7 @@ to its parent. The [[yii\base\Application::loadedModules]] property keeps a list direct children and nested ones, indexed by their class names. -## Best Practices +## Best Practices Modules are best used in large applications whose features can be divided into several groups, each consisting of a set of closely related features. Each such feature group can be developed as a module which is developed and diff --git a/docs/guide/structure-views.md b/docs/guide/structure-views.md index 3363f698369..2212ea0252e 100644 --- a/docs/guide/structure-views.md +++ b/docs/guide/structure-views.md @@ -9,7 +9,7 @@ to facilitate view composition and rendering. For simplicity, we often call view as views. -## Creating Views +## Creating Views As aforementioned, a view is simply a PHP script mixed with HTML and PHP code. The following is the view that presents a login form. As you can see, PHP code is used to generate the dynamic content, such as the @@ -48,7 +48,7 @@ or other objects which trigger the [view rendering](#rendering-views). be recognized by IDEs. It is also a good way of documenting your views. -### Security +### Security When creating views that generate HTML pages, it is important that you encode and/or filter the data coming from end users before presenting them. Otherwise, your application may be subject to @@ -84,7 +84,7 @@ use yii\helpers\HtmlPurifier; [caching](caching-overview.md) the filtering result if your application requires high performance. -### Organizing Views +### Organizing Views Like [controllers](structure-controllers.md) and [models](structure-models.md), there are conventions to organize views. @@ -101,7 +101,7 @@ You may customize these default view directories by overriding the [[yii\base\Vi method of controllers or widgets. -## Rendering Views +## Rendering Views You can render views in [controllers](structure-controllers.md), [widgets](structure-widgets.md), or any other places by calling view rendering methods. These methods share a similar signature shown as follows, @@ -116,7 +116,7 @@ methodName($view, $params = []) ``` -### Rendering in Controllers +### Rendering in Controllers Within [controllers](structure-controllers.md), you may call the following controller methods to render views: @@ -158,7 +158,7 @@ class PostController extends Controller ``` -### Rendering in Widgets +### Rendering in Widgets Within [widgets](structure-widgets.md), you may call the following widget methods to render views. @@ -189,7 +189,7 @@ class ListWidget extends Widget ``` -### Rendering in Views +### Rendering in Views You can render a view within another view by calling one of the following methods provided by the [[yii\base\View|view component]]: @@ -207,7 +207,7 @@ as the view being currently rendered. Remember that `$this` in a view refers to ``` -### Rendering in Other Places +### Rendering in Other Places In any place, you can get access to the [[yii\base\View|view]] application component by the expression `Yii::$app->view` and then call its aforementioned methods to render a view. For example, @@ -218,7 +218,7 @@ echo \Yii::$app->view->renderFile('@app/views/site/license.php'); ``` -### Named Views +### Named Views When you render a view, you can specify the view using either a view name or a view file path/alias. In most cases, you would use the former because it is more concise and flexible. We call views specified using names as *named views*. @@ -248,7 +248,7 @@ actually render the view file `@app/views/post/view.php`, while calling `$this-> will render the view file `@app/views/post/_overview.php`. -### Accessing Data in Views +### Accessing Data in Views There are two approaches to access data within a view: push and pull. @@ -280,7 +280,7 @@ on context objects. Its drawback is that you need to manually build the data arr become tedious and error prone if a view is shared and rendered in different places. -### Sharing Data among Views +### Sharing Data among Views The [[yii\base\View|view component]] provides the [[yii\base\View::params|params]] property that you can use to share data among views. @@ -302,7 +302,7 @@ passed along [[yii\base\View::params|params]]: ``` -## Layouts +## Layouts Layouts are a special type of views that represent the common parts of multiple views. For example, the pages for most Web applications share the same page header and footer. While you can repeat the same page header and footer @@ -310,7 +310,7 @@ in every view, a better way is to do this once in a layout and embed the renderi an appropriate place in the layout. -### Creating Layouts +### Creating Layouts Because layouts are also views, they can be created in the similar way as normal views. By default, layouts are stored in the directory `@app/views/layouts`. For layouts used within a [module](structure-modules.md), @@ -371,7 +371,7 @@ the places where these methods are called. be replaced by the registered HTML code (e.g. JavaScript) targeted at the body end position. -### Accessing Data in Layouts +### Accessing Data in Layouts Within a layout, you have access to two predefined variables: `$this` and `$content`. The former refers to the [[yii\base\View|view]] component, like in normal views, while the latter contains the rendering result of a content @@ -382,7 +382,7 @@ the [Accessing Data in Views](#accessing-data-in-views) subsection. If you want to a layout, you may use the method described in the [Sharing Data among Views](#sharing-data-among-views) subsection. -### Using Layouts +### Using Layouts As described in the [Rendering in Controllers](#rendering-in-controllers) subsection, when you render a view by calling the [[yii\base\Controller::render()|render()]] method in a controller, a layout will be applied @@ -437,7 +437,7 @@ determined in the first step. The layout value can be: If the layout value does not contain a file extension, it will use the default one `.php`. -### Nested Layouts +### Nested Layouts Sometimes you may want to nest one layout in another. For example, in different sections of a Web site, you want to use different layouts, while all these layouts share the same basic layout that generates the overall @@ -459,7 +459,7 @@ specifies what is the parent layout. It can be either a layout file or alias. Using the above approach, you can nest layouts in more than one levels. -### Using Blocks +### Using Blocks Blocks allow you to specify the view content in one place while displaying it in another. They are often used together with layouts. For example, you can define a block in a content view and display it in the layout. @@ -520,7 +520,7 @@ not defined. ``` -## Using View Components +## Using View Components [[yii\base\View|View components]] provides many view-related features. While you can get view components by creating individual instances of [[yii\base\View]] or its child class, in most cases you will mainly use @@ -551,7 +551,7 @@ View components provide the following useful view-related features, each describ You may also frequently use the following minor yet useful features when you are developing Web pages. -### Setting Page Titles +### Setting Page Titles Every Web page should have a title. Normally the title tag is being displayed in a [layout](#layouts). However, in practice the title is often determined in content views rather than layouts. To solve this problem, [[yii\web\View]] provides @@ -572,7 +572,7 @@ Then in the layout, make sure you have the following code in the `` sectio ``` -### Registering Meta Tags +### Registering Meta Tags Web pages usually need to generate various meta tags needed by different parties. Like page titles, meta tags appear in the `` section and are usually generated in layouts. @@ -606,7 +606,7 @@ $this->registerMetaTag(['name' => 'description', 'content' => 'This website is a ``` -### Registering Link Tags +### Registering Link Tags Like [meta tags](#registering-meta-tags), link tags are useful in many cases, such as customizing favicon, pointing to RSS feed or delegating OpenID to another server. You can work with link tags in the similar way as meta tags @@ -631,7 +631,7 @@ Similar as [[yii\web\View::registerMetaTag()|registerMetaTags()]], you can speci [[yii\web\View::registerLinkTag()|registerLinkTag()]] to avoid generating repeated link tags. -## View Events +## View Events [[yii\base\View|View components]] trigger several events during the view rendering process. You may respond to these events to inject content into views or process the rendering results before they are sent to end users. @@ -655,7 +655,7 @@ For example, the following code injects the current date at the end of the page ``` -## Rendering Static Pages +## Rendering Static Pages Static pages refer to those Web pages whose main content are mostly static without the need of accessing dynamic data pushed from controllers. @@ -703,7 +703,7 @@ for this view under the directory `@app/views/site/pages`. You may configure [[y to change the directory for searching these views. -## Best Practices +## Best Practices Views are responsible for presenting models in the format that end users desire. In general, views diff --git a/docs/guide/structure-widgets.md b/docs/guide/structure-widgets.md index 919dbaa9ab3..0529b278eb6 100644 --- a/docs/guide/structure-widgets.md +++ b/docs/guide/structure-widgets.md @@ -19,7 +19,7 @@ In the following, we will introduce the basic knowledge about widgets. Please re if you want to learn about the usage of a particular widget. -## Using Widgets +## Using Widgets Widgets are primarily used in [views](structure-views.md). You can call the [[yii\base\Widget::widget()]] method to use a widget in a view. The method takes a [configuration](concept-configurations.md) array for initializing @@ -69,7 +69,7 @@ Note that unlike [[yii\base\Widget::widget()]] which returns the rendering resul [[yii\base\Widget::begin()]] returns an instance of the widget which you can use to build the widget content. -## Creating Widgets +## Creating Widgets To create a widget, extend from [[yii\base\Widget]] and override the [[yii\base\Widget::init()]] and/or [[yii\base\Widget::run()]] methods. Usually, the `init()` method should contain the code that normalizes the widget @@ -175,7 +175,7 @@ stands for the directory containing the widget class file. Therefore, the above the [[yii\base\Widget::getViewPath()]] method to customize the directory containing the widget view files. -## Best Practices +## Best Practices Widgets are an object-oriented way of reusing view code. diff --git a/docs/guide/tutorial-console.md b/docs/guide/tutorial-console.md index 8c0e7d9ee46..388db4022b3 100644 --- a/docs/guide/tutorial-console.md +++ b/docs/guide/tutorial-console.md @@ -7,7 +7,7 @@ Yii has full featured support for console applications, whose structure is very consists of one or more [[yii\console\Controller]] classes, which are often referred to as "commands" in the console environment. Each controller can also have one or more actions, just like web controllers. -Usage +Usage ----- You execute a console controller action using the following syntax: @@ -30,7 +30,7 @@ In the above `yii` is the console application entry script which is described be > glob that will be replaced by all file names of the current directory. -Entry script +Entry script ------------ The console application entry script is equivalent to the `index.php` bootstrap file used for the web application. @@ -65,7 +65,7 @@ not want to see a stack trace on error, and/or if you want to improve the overal templates, the console application entry script has debugging enabled by default to provide a more developer-friendly environment. -Configuration +Configuration ------------- As can be seen in the code above, the console application uses its own configuration file, named `console.php`. In this file @@ -85,7 +85,7 @@ parts into a separate file, and including this file in both of the application c > ``` -Creating your own console commands +Creating your own console commands ---------------------------------- ### Console Controller and Action diff --git a/docs/guide/tutorial-core-validators.md b/docs/guide/tutorial-core-validators.md index 92fbc5aad97..d7f78256ced 100644 --- a/docs/guide/tutorial-core-validators.md +++ b/docs/guide/tutorial-core-validators.md @@ -19,7 +19,7 @@ The [[yii\validators\Validator::builtInValidators]] property declares all suppor In the following, we will describe the main usage and properties of every core validator. -## [[yii\validators\BooleanValidator|boolean]] +## [[yii\validators\BooleanValidator|boolean]] ```php [ @@ -42,7 +42,7 @@ This validator checks if the input value is a boolean. [[yii\validators\BooleanValidator::strict|strict]] property as false. -## [[yii\captcha\CaptchaValidator|captcha]] +## [[yii\captcha\CaptchaValidator|captcha]] ```php [ @@ -60,7 +60,7 @@ to make sure an input is the same as the verification code displayed by [[yii\ca which means the input is required. -## [[yii\validators\CompareValidator|compare]] +## [[yii\validators\CompareValidator|compare]] ```php [ @@ -93,7 +93,7 @@ is as specified by the `operator` property. * `<=`: check if value being validated is less than or equal to the value being compared with. -## [[yii\validators\DateValidator|date]] +## [[yii\validators\DateValidator|date]] ```php [ @@ -121,7 +121,7 @@ or `1970-01-01` in the input field of a date picker. [['from_date', 'to_date'], 'default', 'value' => null], ``` -## [[yii\validators\DefaultValueValidator|default]] +## [[yii\validators\DefaultValueValidator|default]] ```php [ @@ -155,7 +155,7 @@ function foo($model, $attribute) { in the [Empty Values](input-validation.md#handling-empty-inputs) section. -## [[yii\validators\NumberValidator|double]] +## [[yii\validators\NumberValidator|double]] ```php [ @@ -170,7 +170,7 @@ This validator checks if the input value is a double number. It is equivalent to - `min`: the lower limit (inclusive) of the value. If not set, it means the validator does not check the lower limit. -## [[yii\validators\EmailValidator|email]] +## [[yii\validators\EmailValidator|email]] ```php [ @@ -190,7 +190,7 @@ This validator checks if the input value is a valid email address. or an exception would be thrown. -## [[yii\validators\ExistValidator|exist]] +## [[yii\validators\ExistValidator|exist]] ```php [ @@ -234,7 +234,7 @@ either a single column or multiple columns. this property cannot be set true if you are validating against multiple columns by setting `targetAttribute` as an array. -## [[yii\validators\FileValidator|file]] +## [[yii\validators\FileValidator|file]] ```php [ @@ -266,7 +266,7 @@ This validator checks if the input is a valid uploaded file. section for complete coverage about uploading files and performing validation about the uploaded files. -## [[yii\validators\FilterValidator|filter]] +## [[yii\validators\FilterValidator|filter]] ```php [ @@ -303,7 +303,7 @@ back to the attribute being validated. > ``` -## [[yii\validators\ImageValidator|image]] +## [[yii\validators\ImageValidator|image]] ```php [ @@ -325,7 +325,7 @@ validation purpose: - `maxHeight`: the maximum height of the image. Defaults to null, meaning no upper limit. -## [[yii\validators\RangeValidator|in]] +## [[yii\validators\RangeValidator|in]] ```php [ @@ -345,7 +345,7 @@ This validator checks if the input value can be found among the given list of va every element in the array must be found in the given list of values, or the validation would fail. -## [[yii\validators\NumberValidator|integer]] +## [[yii\validators\NumberValidator|integer]] ```php [ @@ -360,7 +360,7 @@ This validator checks if the input value is an integer. - `min`: the lower limit (inclusive) of the value. If not set, it means the validator does not check the lower limit. -## [[yii\validators\RegularExpressionValidator|match]] +## [[yii\validators\RegularExpressionValidator|match]] ```php [ @@ -378,7 +378,7 @@ This validator checks if the input value matches the specified regular expressio successful only if the input value does NOT match the pattern. -## [[yii\validators\NumberValidator|number]] +## [[yii\validators\NumberValidator|number]] ```php [ @@ -393,7 +393,7 @@ This validator checks if the input value is a number. It is equivalent to the [d - `min`: the lower limit (inclusive) of the value. If not set, it means the validator does not check the lower limit. -## [[yii\validators\RequiredValidator|required]] +## [[yii\validators\RequiredValidator|required]] ```php [ @@ -415,7 +415,7 @@ This validator checks if the input value is provided and not empty. in the [Empty Values](input-validation.md#handling-empty-inputs) section. -## [[yii\validators\SafeValidator|safe]] +## [[yii\validators\SafeValidator|safe]] ```php [ @@ -428,7 +428,7 @@ This validator does not perform data validation. Instead, it is used to mark an a [safe attribute](structure-models.md#safe-attributes). -## [[yii\validators\StringValidator|string]] +## [[yii\validators\StringValidator|string]] ```php [ @@ -451,7 +451,7 @@ This validator checks if the input value is a valid string with certain length. [[yii\base\Application::charset|charset]] value which defaults to `UTF-8`. -## [[yii\validators\FilterValidator|trim]] +## [[yii\validators\FilterValidator|trim]] ```php [ @@ -464,7 +464,7 @@ This validator does not perform data validation. Instead, it will trim the surro the input value. Note that if the input value is an array, it will be ignored by this validator. -## [[yii\validators\UniqueValidator|unique]] +## [[yii\validators\UniqueValidator|unique]] ```php [ @@ -502,7 +502,7 @@ either a single column or multiple columns. is the [[yii\db\Query|Query]] object that you can modify in the function. -## [[yii\validators\UrlValidator|url]] +## [[yii\validators\UrlValidator|url]] ```php [ diff --git a/docs/guide/tutorial-i18n.md b/docs/guide/tutorial-i18n.md index 2e418512118..eed054435bc 100644 --- a/docs/guide/tutorial-i18n.md +++ b/docs/guide/tutorial-i18n.md @@ -498,7 +498,7 @@ Formatting Number and Date values See the [data formatter section](output-formatter.md) for details. -Setting up your PHP environment +Setting up your PHP environment ------------------------------- Yii uses the [PHP intl extension](http://php.net/manual/en/book.intl.php) to provide most of its internationalization features diff --git a/docs/guide/tutorial-shared-hosting.md b/docs/guide/tutorial-shared-hosting.md index ea0f4537597..5aa26136f03 100644 --- a/docs/guide/tutorial-shared-hosting.md +++ b/docs/guide/tutorial-shared-hosting.md @@ -10,7 +10,7 @@ Deploying basic application Since there's typically only one webroot it is recommended to use basic application template. Refer to [Installing Yii chapter](start-installation.md) and install application template locally. -### Add extras for webserver +### Add extras for webserver If webserver used is Apache you'll need to add `.htaccess` file with the following content to `web` (where `index.php` is): @@ -31,7 +31,7 @@ RewriteRule . index.php In case of nginx you should not need any extra config files. -### Renaming webroot +### Renaming webroot If after connecting to your shared hosting via FTP or by other means you're seeing something like the following, you're most probably lucky. diff --git a/docs/guide/tutorial-yii-integration.md b/docs/guide/tutorial-yii-integration.md index 6408f904844..df728cac643 100644 --- a/docs/guide/tutorial-yii-integration.md +++ b/docs/guide/tutorial-yii-integration.md @@ -5,13 +5,13 @@ From time to time, you may need to use some third-party code in your Yii applica use Yii as a library in some third-party systems. In this section, we will show how to achieve these goals. -Using Third-Party Libraries in Yii +Using Third-Party Libraries in Yii ---------------------------------- To use a third-party library in a Yii application, you mainly need to make sure the classes in the library are properly included or can be autoloaded. -### Using Composer Packages +### Using Composer Packages Many third-party libraries are released in terms of [Composer](https://getcomposer.org/) packages. You can install such libraries by taking the following two simple steps: @@ -31,7 +31,7 @@ require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` -### Using Downloaded Libraries +### Using Downloaded Libraries If a library is not released as a Composer package, you should follow its installation instructions to install it. In most cases, you will need to download a release file manually and unpack it in the `BasePath/vendor` directory, @@ -70,7 +70,7 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php'; ``` -Using Yii in Third-Party Systems +Using Yii in Third-Party Systems -------------------------------- Because Yii provides many excellent features, sometimes you may want to use some of its features to support @@ -117,7 +117,7 @@ Now you can use most features provided by Yii. For example, you can create Activ to work with databases. -Using Yii 2 with Yii 1 +Using Yii 2 with Yii 1 ---------------------- If you were using Yii 1 previously, it is likely you have a running Yii 1 application. Instead of rewriting diff --git a/extensions/apidoc/helpers/ApiMarkdown.php b/extensions/apidoc/helpers/ApiMarkdown.php index 0bbd872800e..776931f5f3a 100644 --- a/extensions/apidoc/helpers/ApiMarkdown.php +++ b/extensions/apidoc/helpers/ApiMarkdown.php @@ -8,7 +8,6 @@ namespace yii\apidoc\helpers; use cebe\markdown\GithubMarkdown; -use phpDocumentor\Reflection\DocBlock\Type\Collection; use yii\apidoc\models\TypeDoc; use yii\apidoc\renderers\BaseRenderer; use yii\helpers\Inflector; @@ -82,7 +81,7 @@ protected function renderHeadline($block) { $content = $this->renderAbsy($block['content']); $hash = Inflector::slug(strip_tags($content)); - $hashLink = ""; + $hashLink = ""; $tag = 'h' . $block['level']; return "<$tag>$content $hashLink"; diff --git a/extensions/apidoc/templates/html/views/constSummary.php b/extensions/apidoc/templates/html/views/constSummary.php index b1e852b84d6..c5b3a86989c 100644 --- a/extensions/apidoc/templates/html/views/constSummary.php +++ b/extensions/apidoc/templates/html/views/constSummary.php @@ -33,7 +33,7 @@ definedBy != $type->name ? ' class="inherited"' : '' ?> id="name ?>"> - name ?> + name ?> value ?> shortDescription . "\n" . $constant->description, $constant->definedBy, true) ?> createTypeLink($constant->definedBy) ?> diff --git a/extensions/apidoc/templates/html/views/type.php b/extensions/apidoc/templates/html/views/type.php index 04b0975e2d3..b968dbb33d3 100644 --- a/extensions/apidoc/templates/html/views/type.php +++ b/extensions/apidoc/templates/html/views/type.php @@ -84,18 +84,18 @@ render('seeAlso', ['object' => $type]) ?> - + render('@yii/apidoc/templates/html/views/propertySummary', ['type' => $type, 'protected' => false]) ?> render('@yii/apidoc/templates/html/views/propertySummary', ['type' => $type, 'protected' => true]) ?> - + render('@yii/apidoc/templates/html/views/methodSummary', ['type' => $type, 'protected' => false]) ?> render('@yii/apidoc/templates/html/views/methodSummary', ['type' => $type, 'protected' => true]) ?> - + render('@yii/apidoc/templates/html/views/eventSummary', ['type' => $type]) ?> - + render('@yii/apidoc/templates/html/views/constSummary', ['type' => $type]) ?> render('@yii/apidoc/templates/html/views/propertyDetails', ['type' => $type]) ?>