Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update es folder links #218

Merged
merged 1 commit into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions guide/en/structure/package.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ everything is in good shape. For more details, please refer to the [Testing](../
#### Versioning <span id="versioning"></span>

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.
[semantic versioning](https://semver.org) practice when determining what version numbers should be used.


#### Releasing <span id="releasing"></span>
Expand All @@ -197,7 +197,7 @@ In the release of your package, in addition to code files, you should also consi
help other people learn about and use your extension:

* A readme file in the package root directory: it describes what your extension does and how to install and use it.
We recommend you write it in [Markdown](http://daringfireball.net/projects/markdown/) format and name the file
We recommend you write it in [Markdown](https://daringfireball.net/projects/markdown/) format and name the file
as `README.md`.
* A changelog file in the package root directory: it lists what changes are made in each release. The file
may be written in Markdown format and named as `CHANGELOG.md`.
Expand Down
2 changes: 1 addition & 1 deletion guide/es/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# La Guía Definitiva de Yii 3.0

Check notice on line 1 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L1

[Microsoft.Headings] 'La Guía Definitiva de Yii 3.0' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'La Guía Definitiva de Yii 3.0' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

Esta guía se publica bajo los [Términos de documentación de Yii](http://www.yiiframework.com/doc/terms/).
Esta guía se publica bajo los [Términos de documentación de Yii](https://www.yiiframework.com/doc/terms/).

Introducción
------------
Expand All @@ -9,7 +9,7 @@
* [Actualizar desde la Version 2.0](intro/upgrade-from-v2.md)


Primeros Pasos

Check notice on line 12 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L12

[Microsoft.Headings] 'Primeros Pasos' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Primeros Pasos' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 12, "column": 1}}}, "severity": "INFO"}
---------------

* [Qué Necesitas Saber](start/prerequisites.md)
Expand All @@ -22,7 +22,7 @@
* [Adentrarse en Yii](start/looking-ahead.md)


Estructura De Una Aplicación

Check notice on line 25 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L25

[Microsoft.Headings] 'Estructura De Una Aplicación' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Estructura De Una Aplicación' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 25, "column": 1}}}, "severity": "INFO"}
---------------------

* [Información General de Estructura de Una Aplicación](structure/overview.md)
Expand All @@ -34,21 +34,21 @@
* [Lógica de Intercambio (middleware)](structure/middleware.md)
* [Paquetes](structure/package.md)

Conceptos Clave

Check notice on line 37 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L37

[Microsoft.Headings] 'Conceptos Clave' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Conceptos Clave' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 37, "column": 1}}}, "severity": "INFO"}
------------

* [Autocarga de Clases (Autoloading)](concept/autoloading.md)
* [Contenedor de Inyección de Dependencia](concept/di-container.md)
* [Configuración](concept/configuration.md)
* [Alias](concept/aliases.md)

Check notice on line 43 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L43

[Microsoft.Vocab] Verify your use of 'Alias' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'Alias' with the A-Z word list.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 43, "column": 4}}}, "severity": "INFO"}
* [Eventos](concept/events.md)

Gestión de las Peticiones

Check notice on line 46 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L46

[Microsoft.Headings] 'Gestión de las Peticiones' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Gestión de las Peticiones' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 46, "column": 1}}}, "severity": "INFO"}
-----------------

* [Información General de Gestión de las Peticiones](runtime/overview.md)
* [Bootstrapping](runtime/bootstrapping.md)
* [Enrutamiento y Creación de las URL](runtime/routing.md)

Check warning on line 51 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L51

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 51, "column": 35}}}, "severity": "WARNING"}
* [Peticiones (Requests)](runtime/request.md)
* [Respuestas (Responses)](runtime/response.md)
* [Sesiones (Sessions)](runtime/sessions.md)
Expand All @@ -68,15 +68,15 @@
* [Motores de Plantillas](views/template-engines.md)


Trabajar con Bases de Datos

Check notice on line 71 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L71

[Microsoft.Headings] 'Trabajar con Bases de Datos' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Trabajar con Bases de Datos' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 71, "column": 1}}}, "severity": "INFO"}
----------------------

* [Objeto de Acceso a Datos](db-dao.md): Conexión a una base de datos, consultas básicas, transacciones y manipulación de esquemas
* [Constructor de Consultas](db-query-builder.md): Consulta de la base de datos utilizando una capa simple de abstracción
* [Active Record](db-active-record.md): ORM Active Record, recuperación y manipulación de registros y definición de relaciones

Check notice on line 76 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L76

[Microsoft.Acronyms] 'ORM' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'ORM' has no definition.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 76, "column": 41}}}, "severity": "INFO"}
* [Migraciones](db-migrations.md): Control de versiones de bases de datos en el entorno de desarrollo en equipo

Obtener Datos de los Usuarios

Check notice on line 79 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L79

[Microsoft.Headings] 'Obtener Datos de los Usuarios' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Obtener Datos de los Usuarios' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 79, "column": 1}}}, "severity": "INFO"}
-----------------------

* [Crear Formularios](input/forms.md)
Expand All @@ -85,7 +85,7 @@
* [Obtener Datos de Formularios Tabulados (Tabular Input)](input/tabular-input.md)


Visualizar Datos

Check notice on line 88 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L88

[Microsoft.Headings] 'Visualizar Datos' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Visualizar Datos' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 88, "column": 1}}}, "severity": "INFO"}
---------------

* [Formato de Datos](output/formatting.md)
Expand Down Expand Up @@ -115,7 +115,7 @@
* [Caché HTTP](caching/http.md)


Servicios Web RESTful

Check notice on line 118 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L118

[Microsoft.Headings] 'Servicios Web RESTful' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Servicios Web RESTful' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 118, "column": 1}}}, "severity": "INFO"}
--------------------

* [Inicio Rápido](rest/quick-start.md)
Expand All @@ -127,7 +127,7 @@
* [Gestión de Versiones](rest/versioning.md)
* [Manejo de Errores](rest/error-handling.md)

Herramientas de Desarrollo

Check notice on line 130 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L130

[Microsoft.Headings] 'Herramientas de Desarrollo' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Herramientas de Desarrollo' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 130, "column": 1}}}, "severity": "INFO"}
-----------------

* [Depurador y Barra de Herramientas de Depuración](https://www.yiiframework.com/extension/yiisoft/yii2-debug/doc/guide)
Expand All @@ -135,7 +135,7 @@
* [Generación de Documentación de API](https://www.yiiframework.com/extension/yiisoft/yii2-apidoc)


Pruebas (Testing)

Check notice on line 138 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L138

[Microsoft.Headings] 'Pruebas (Testing)' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Pruebas (Testing)' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 138, "column": 1}}}, "severity": "INFO"}
-------

* [Información General de Pruebas](testing/overview.md)
Expand All @@ -146,7 +146,7 @@
* [Datos de Prueba (Fixtures)](testing/fixtures.md)


Temas Especiales

Check notice on line 149 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L149

[Microsoft.Headings] 'Temas Especiales' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Temas Especiales' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 149, "column": 1}}}, "severity": "INFO"}
--------------

* [Creación de una Aplicación Desde Cero](tutorial/start-from-scratch.md)
Expand All @@ -171,7 +171,7 @@
* [Bootstrap Widgets](https://www.yiiframework.com/extension/yiisoft/yii2-bootstrap/doc/guide)


Clases Auxiliares

Check notice on line 174 in guide/es/README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/README.md#L174

[Microsoft.Headings] 'Clases Auxiliares' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Clases Auxiliares' should use sentence-style capitalization.", "location": {"path": "guide/es/README.md", "range": {"start": {"line": 174, "column": 1}}}, "severity": "INFO"}
-------

* [Información General de Clases Auxiliares](helper-overview.md)
Expand Down
2 changes: 1 addition & 1 deletion guide/es/concept/di-container.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Depdendency injection <span id="dependency-injection"></span>

There are two ways of re-using things in OOP: inheritance and composition.

Check notice on line 5 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L5

[Microsoft.Acronyms] 'OOP' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'OOP' has no definition.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 5, "column": 42}}}, "severity": "INFO"}

Inheritance is simple:

Expand All @@ -28,9 +28,9 @@
}
```

The issue here is that these two are becoming unnecessarily coupled or inter-dependent making them more fragile.

Check warning on line 31 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L31

[Microsoft.Adverbs] Remove 'unnecessarily' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'unnecessarily' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 31, "column": 47}}}, "severity": "WARNING"}

Another way to handle it is composition:

Check failure on line 33 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L33

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 33, "column": 23}}}, "severity": "ERROR"}

```php
interface CacheInterface
Expand Down Expand Up @@ -66,20 +66,20 @@
}
```

In the above we've avoided unnecessary inheritance and used interface to reduce coupling. You can replace cache

Check notice on line 69 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L69

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 69, "column": 8}}}, "severity": "INFO"}

Check warning on line 69 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L69

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 69, "column": 14}}}, "severity": "WARNING"}
implementation without changing `CachedWidget` so it is becoming more stable.

Check failure on line 70 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L70

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 70, "column": 51}}}, "severity": "ERROR"}

The process of getting an instance of `CacheInterface` into `CachedWidget` is called dependency injection.

Check notice on line 72 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L72

[Microsoft.Passive] 'is called' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is called' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 72, "column": 76}}}, "severity": "INFO"}
There are multiple ways to perform it:

- Constructor injection. Best for mandatory dependencies.
- Method injection. Best for optional dependencies.
- Property injection. Better to be avoided in PHP except maybe data transfer objects.

Check notice on line 77 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L77

[Microsoft.Passive] 'be avoided' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be avoided' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 77, "column": 33}}}, "severity": "INFO"}


## DI container <span id="di-container"></span>

Check warning on line 80 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L80

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 80, "column": 4}}}, "severity": "WARNING"}

Injecting basic dependencies is simple and easy. You're choosing a place where you don't care about dependencies,

Check notice on line 82 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L82

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 82, "column": 50}}}, "severity": "INFO"}
which is usually action handler, which you aren't going to unit-test ever, create instances of dependencies needed
and pass these to dependent classes.

Expand All @@ -96,16 +96,16 @@
That's what dependency containers are for.

A dependency injection (DI) container is an object that knows how to instantiate and configure objects and
all their dependent objects. [Martin Fowler's article](http://martinfowler.com/articles/injection.html) has well
all their dependent objects. [Martin Fowler's article](https://martinfowler.com/articles/injection.html) has well
explained why DI container is useful. Here we will mainly explain the usage of the DI container provided by Yii.

Check warning on line 100 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L100

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 100, "column": 44}}}, "severity": "WARNING"}

Yii provides the DI container feature through the [yiisoft/di](https://github.com/yiisoft/di) package and
[yiisoft/injector](https://github.com/yiisoft/injector) package.

### Configuring container <span id="configuring-container"></span>

Because dependencies are needed when new objects are being created, their registration should be done

Check notice on line 107 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L107

[Microsoft.Passive] 'are needed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are needed' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 107, "column": 22}}}, "severity": "INFO"}

Check notice on line 107 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L107

[Microsoft.Passive] 'being created' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'being created' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 107, "column": 54}}}, "severity": "INFO"}

Check notice on line 107 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L107

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 107, "column": 95}}}, "severity": "INFO"}
as early as possible. If you are application developer it could be done right in the application configuration,

Check failure on line 108 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L108

[Microsoft.Avoid] Don't use 'application developer'. See the A-Z word list for details.
Raw output
{"message": "[Microsoft.Avoid] Don't use 'application developer'. See the A-Z word list for details.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 108, "column": 34}}}, "severity": "ERROR"}

Check notice on line 108 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L108

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 108, "column": 65}}}, "severity": "INFO"}
`config/web.php`. For the following service:

```php
Expand Down Expand Up @@ -199,10 +199,10 @@
}
```

Since action handler is instantiated and called using [yiisoft/injector](https://github.com/yiisoft/injector), it

Check notice on line 202 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L202

[Microsoft.Passive] 'is instantiated' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is instantiated' looks like passive voice.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 202, "column": 22}}}, "severity": "INFO"}
would check constructor and method argument types, get dependencies of these types from container and pass them as
arguments. That is usually called auto-wiring. It happens for sub-dependencies as well i.e., if dependency is not provided

Check failure on line 204 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L204

[Microsoft.Contractions] Use 'that's' instead of 'That is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'that's' instead of 'That is'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 204, "column": 12}}}, "severity": "ERROR"}

Check failure on line 204 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L204

[Microsoft.Auto] In general, don't hyphenate 'auto-wiring'.
Raw output
{"message": "[Microsoft.Auto] In general, don't hyphenate 'auto-wiring'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 204, "column": 35}}}, "severity": "ERROR"}

Check failure on line 204 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L204

[Microsoft.Foreign] Use 'that is' instead of 'i.e.,'.
Raw output
{"message": "[Microsoft.Foreign] Use 'that is' instead of 'i.e.,'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 204, "column": 88}}}, "severity": "ERROR"}

Check failure on line 204 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L204

[Microsoft.Contractions] Use 'isn't' instead of 'is not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 204, "column": 108}}}, "severity": "ERROR"}
explicitly, container would check if it has such a dependency first. As a developer it is enough to declare a dependency

Check failure on line 205 in guide/es/concept/di-container.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/concept/di-container.md#L205

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/concept/di-container.md", "range": {"start": {"line": 205, "column": 85}}}, "severity": "ERROR"}
you need, and it would be got from container automatically.


Expand Down
2 changes: 1 addition & 1 deletion guide/es/intro/what-is-yii.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
What is Yii

Check notice on line 1 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L1

[Microsoft.Headings] 'What is Yii' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'What is Yii' should use sentence-style capitalization.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 1, "column": 1}}}, "severity": "INFO"}

Check failure on line 1 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L1

[Microsoft.Contractions] Use 'what's' instead of 'What is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'what's' instead of 'What is'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 1, "column": 1}}}, "severity": "ERROR"}
===========

Yii is a high performance, component-based PHP framework for rapidly developing modern Web applications.

Check warning on line 4 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L4

[Microsoft.Adverbs] Remove 'rapidly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'rapidly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 4, "column": 62}}}, "severity": "WARNING"}
The name Yii (pronounced `Yee` or `[ji:]`) means "simple and evolutionary" in Chinese. It can also
be thought of as an acronym for **Yes It Is**!

Check notice on line 6 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L6

[Microsoft.Passive] 'be thought' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be thought' looks like passive voice.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 6, "column": 1}}}, "severity": "INFO"}

Check failure on line 6 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L6

[Microsoft.Contractions] Use 'it's' instead of 'It Is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'It Is'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 6, "column": 39}}}, "severity": "ERROR"}


What is Yii Best for?

Check failure on line 9 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L9

[Microsoft.Contractions] Use 'what's' instead of 'What is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'what's' instead of 'What is'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 9, "column": 1}}}, "severity": "ERROR"}

Check notice on line 9 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L9

[Microsoft.Headings] 'What is Yii Best for?' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'What is Yii Best for?' should use sentence-style capitalization.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 9, "column": 1}}}, "severity": "INFO"}

Check warning on line 9 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L9

[Microsoft.HeadingPunctuation] Don't use end punctuation in headings.
Raw output
{"message": "[Microsoft.HeadingPunctuation] Don't use end punctuation in headings.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 9, "column": 20}}}, "severity": "WARNING"}
---------------------

Yii is a generic Web programming framework, meaning that it can be used for developing all kinds

Check notice on line 12 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L12

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 12, "column": 65}}}, "severity": "INFO"}
of Web applications using PHP. Because of its component-based architecture and sophisticated caching

Check notice on line 13 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L13

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 13, "column": 32}}}, "severity": "INFO"}
support, it is especially suitable for developing large-scale applications such as portals, forums, content

Check failure on line 14 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L14

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 14, "column": 10}}}, "severity": "ERROR"}
management systems (CMS), e-commerce projects, RESTful Web services, and so on.

Check notice on line 15 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L15

[Microsoft.Acronyms] 'CMS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CMS' has no definition.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 15, "column": 21}}}, "severity": "INFO"}

Check failure on line 15 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L15

[Microsoft.Avoid] Don't use 'and so on'. See the A-Z word list for details.
Raw output
{"message": "[Microsoft.Avoid] Don't use 'and so on'. See the A-Z word list for details.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 15, "column": 70}}}, "severity": "ERROR"}


How does Yii Compare with Other Frameworks?

Check notice on line 18 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L18

[Microsoft.Headings] 'How does Yii Compare with Other Frameworks?' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'How does Yii Compare with Other Frameworks?' should use sentence-style capitalization.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 18, "column": 1}}}, "severity": "INFO"}

Check warning on line 18 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L18

[Microsoft.HeadingPunctuation] Don't use end punctuation in headings.
Raw output
{"message": "[Microsoft.HeadingPunctuation] Don't use end punctuation in headings.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 18, "column": 42}}}, "severity": "WARNING"}
-------------------------------------------

If you're already familiar with another framework, you may appreciate knowing how Yii compares:
Expand All @@ -28,41 +28,41 @@
- Explicitness.
- Consistency.

Yii will never try to over-design things mainly for the purpose of strictly following

Check warning on line 31 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L31

[Microsoft.Adverbs] Remove 'strictly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'strictly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 31, "column": 70}}}, "severity": "WARNING"}
some design pattern.
- Yii extensively uses PSR interfaces with ability to reuse what PHP community created and even

Check notice on line 33 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L33

[Microsoft.Acronyms] 'PSR' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'PSR' has no definition.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 33, "column": 24}}}, "severity": "INFO"}
replace core implementations if needed.
- Yii is both a set of libraries and a full-stack framework providing many proven and ready-to-use features:
caching, logging, template engine, data abstraction, development tools, code generation; and more.
- Yii is extremely extensible. You can customize or replace nearly every piece of the core's code. You can also

Check warning on line 37 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L37

[Microsoft.Adverbs] Remove 'extremely' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'extremely' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 37, "column": 10}}}, "severity": "WARNING"}

Check warning on line 37 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L37

[Microsoft.Adverbs] Remove 'nearly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'nearly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 37, "column": 61}}}, "severity": "WARNING"}
take advantage of Yii's solid extension architecture to use or develop redistributable extensions.
- High performance is always a primary goal of Yii.

Yii is not a one-man show, it is backed up by a [strong core developer team](http://www.yiiframework.com/team/), as well as a large community
Yii is not a one-man show, it is backed up by a [strong core developer team](https://www.yiiframework.com/team/), as well as a large community

Check notice on line 41 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L41

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 41, "column": 1}}}, "severity": "INFO"}

Check failure on line 41 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L41

[Microsoft.Contractions] Use 'isn't' instead of 'is not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 41, "column": 5}}}, "severity": "ERROR"}

Check failure on line 41 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L41

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 41, "column": 28}}}, "severity": "ERROR"}

Check notice on line 41 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L41

[Microsoft.Passive] 'is backed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is backed' looks like passive voice.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 41, "column": 31}}}, "severity": "INFO"}

Check notice on line 41 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L41

[Microsoft.Vocab] Verify your use of 'as well as' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'as well as' with the A-Z word list.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 41, "column": 115}}}, "severity": "INFO"}
of professionals constantly contributing to Yii's development. The Yii developer team
keeps a close eye on the latest Web development trends and on the best practices and features
found in other frameworks and projects. The most relevant best practices and features found elsewhere are regularly incorporated into the core framework and exposed

Check warning on line 44 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L44

[Microsoft.Adverbs] Remove 'regularly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'regularly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 44, "column": 107}}}, "severity": "WARNING"}
via simple and elegant interfaces.


Yii Versions

Check notice on line 48 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L48

[Microsoft.Headings] 'Yii Versions' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Yii Versions' should use sentence-style capitalization.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 48, "column": 1}}}, "severity": "INFO"}
------------

Yii currently has three major versions available: 1.1, 2.0 and 3.0.

Version 1.1 is the old generation and is now in security fixes only mode.

Version 2.0 is current stable version that is in the feature freeze bugfix mode.

Check failure on line 55 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L55

[Microsoft.Contractions] Use 'that's' instead of 'that is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'that's' instead of 'that is'.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 55, "column": 39}}}, "severity": "ERROR"}

Version 3.0 is the current version in development. This guide is mainly about version 3.


Requirements and Prerequisites

Check notice on line 60 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L60

[Microsoft.Headings] 'Requirements and Prerequisites' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Requirements and Prerequisites' should use sentence-style capitalization.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 60, "column": 1}}}, "severity": "INFO"}
------------------------------

Yii 3.0 requires PHP 7.4 or above and runs best with the latest version of PHP 7.

Check notice on line 63 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L63

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 63, "column": 29}}}, "severity": "INFO"}

Using Yii requires basic knowledge of object-oriented programming (OOP), as Yii is a pure OOP-based framework.

Check notice on line 65 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L65

[Microsoft.Acronyms] 'OOP' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'OOP' has no definition.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 65, "column": 68}}}, "severity": "INFO"}

Check notice on line 65 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L65

[Microsoft.Acronyms] 'OOP' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'OOP' has no definition.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 65, "column": 91}}}, "severity": "INFO"}
Yii 3.0 also makes use of the latest features of PHP, such as type declarations and generators. Understanding these
concepts will help you more easily pick up Yii 3.0.

Check warning on line 67 in guide/es/intro/what-is-yii.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/intro/what-is-yii.md#L67

[Microsoft.Adverbs] Remove 'easily' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'easily' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/intro/what-is-yii.md", "range": {"start": {"line": 67, "column": 29}}}, "severity": "WARNING"}

4 changes: 2 additions & 2 deletions guide/es/security/authorization.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,47 +41,47 @@
```

Behind the scenes, `Yiisoft\Yii\Web\User\User::can()` method calls `\Yiisoft\Access\AccessCheckerInterface::userHasPermission()`
so an implementation should be provided in dependency container in order for it to work.

Check notice on line 44 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L44

[Microsoft.Passive] 'be provided' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be provided' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 44, "column": 29}}}, "severity": "INFO"}

## Role Based Access Control (RBAC) <span id="rbac"></span>

Check notice on line 46 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L46

[Microsoft.Headings] 'Role Based Access Control (RBAC)' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Role Based Access Control (RBAC)' should use sentence-style capitalization.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 46, "column": 4}}}, "severity": "INFO"}

Check warning on line 46 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L46

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 46, "column": 31}}}, "severity": "WARNING"}

Role-Based Access Control (RBAC) provides a simple yet powerful centralized access control. Please refer to
the [Wikipedia](http://en.wikipedia.org/wiki/Role-based_access_control) for details about comparing RBAC
the [Wikipedia](https://en.wikipedia.org/wiki/Role-based_access_control) for details about comparing RBAC
with other more traditional access control schemes.

Yii implements a General Hierarchical RBAC, following the [NIST RBAC model](http://csrc.nist.gov/rbac/sandhu-ferraiolo-kuhn-00.pdf).
Yii implements a General Hierarchical RBAC, following the [NIST RBAC model](https://csrc.nist.gov/rbac/sandhu-ferraiolo-kuhn-00.pdf).

Check notice on line 52 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L52

[Microsoft.Acronyms] 'NIST' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'NIST' has no definition.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 52, "column": 60}}}, "severity": "INFO"}

Using RBAC involves two parts of work. The first part is to build up the RBAC authorization data, and the second

Check notice on line 54 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L54

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 54, "column": 40}}}, "severity": "INFO"}
part is to use the authorization data to perform access check in places where it is needed. Since RBAC implements

Check failure on line 55 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L55

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 55, "column": 79}}}, "severity": "ERROR"}

Check notice on line 55 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L55

[Microsoft.Passive] 'is needed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is needed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 55, "column": 82}}}, "severity": "INFO"}
`\Yiisoft\Access\AccessCheckerInterface`, using it is similar to using any other implementation of access checker.

Check failure on line 56 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L56

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 56, "column": 49}}}, "severity": "ERROR"}

To facilitate our description next, we will first introduce some basic RBAC concepts.

Check warning on line 58 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L58

[Microsoft.We] Try to avoid using first-person plural like 'our'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'our'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 58, "column": 15}}}, "severity": "WARNING"}

Check warning on line 58 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L58

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 58, "column": 37}}}, "severity": "WARNING"}

### Basic Concepts <span id="basic-concepts"></span>

Check notice on line 60 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L60

[Microsoft.Headings] 'Basic Concepts' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Basic Concepts' should use sentence-style capitalization.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 60, "column": 5}}}, "severity": "INFO"}

A role represents a collection of *permissions* (e.g. creating posts, updating posts). A role may be assigned

Check failure on line 62 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L62

[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 62, "column": 50}}}, "severity": "ERROR"}

Check notice on line 62 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L62

[Microsoft.Passive] 'be assigned' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be assigned' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 62, "column": 99}}}, "severity": "INFO"}
to one or multiple users. To check if a user has a specified permission, we may check if the user is assigned

Check warning on line 63 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L63

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 63, "column": 74}}}, "severity": "WARNING"}

Check notice on line 63 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L63

[Microsoft.Passive] 'is assigned' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is assigned' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 63, "column": 99}}}, "severity": "INFO"}
with a role that contains that permission.

Associated with each role or permission, there may be a *rule*. A rule represents a piece of code that will be

Check notice on line 66 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L66

[Microsoft.Passive] 'be executed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be executed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 66, "column": 109}}}, "severity": "INFO"}
executed during access check to determine if the corresponding role or permission applies to the current user.
For example, the "update post" permission may have a rule that checks if the current user is the post creator.
During access checking, if the user is NOT the post creator, he/she will be considered not having the "update post" permission.

Check failure on line 69 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L69

[Microsoft.Contractions] Use 'isn't' instead of 'is NOT'.
Raw output
{"message": "[Microsoft.Contractions] Use 'isn't' instead of 'is NOT'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 69, "column": 37}}}, "severity": "ERROR"}

Check notice on line 69 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L69

[Microsoft.Acronyms] 'NOT' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'NOT' has no definition.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 69, "column": 40}}}, "severity": "INFO"}

Check notice on line 69 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L69

[Microsoft.Vocab] Verify your use of 'he' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'he' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 69, "column": 62}}}, "severity": "INFO"}

Check failure on line 69 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L69

[Microsoft.Gender] Don't use 'he/she'.
Raw output
{"message": "[Microsoft.Gender] Don't use 'he/she'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 69, "column": 62}}}, "severity": "ERROR"}

Check notice on line 69 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L69

[Microsoft.Vocab] Verify your use of 'she' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'she' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 69, "column": 65}}}, "severity": "INFO"}

Check notice on line 69 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L69

[Microsoft.Passive] 'be considered' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be considered' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 69, "column": 74}}}, "severity": "INFO"}

Both roles and permissions can be organized in a hierarchy. In particular, a role may consist of other roles or permissions;

Check notice on line 71 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L71

[Microsoft.Passive] 'be organized' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be organized' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 71, "column": 32}}}, "severity": "INFO"}

Check notice on line 71 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L71

[Microsoft.Semicolon] Try to simplify this sentence.
Raw output
{"message": "[Microsoft.Semicolon] Try to simplify this sentence.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 71, "column": 124}}}, "severity": "INFO"}
and a permission may consist of other permissions. Yii implements a *partial order* hierarchy which includes the
more special *tree* hierarchy. While a role can contain a permission, it is not `true` vice versa.

Check failure on line 73 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L73

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 73, "column": 71}}}, "severity": "ERROR"}


### Configuring RBAC <span id="configuring-rbac"></span>

Check notice on line 76 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L76

[Microsoft.Headings] 'Configuring RBAC' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Configuring RBAC' should use sentence-style capitalization.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 76, "column": 5}}}, "severity": "INFO"}

Check warning on line 76 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L76

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 76, "column": 17}}}, "severity": "WARNING"}

RBAC is available via `yiisoft/rbac` package so we need to require it:

Check warning on line 78 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L78

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 78, "column": 49}}}, "severity": "WARNING"}

```
composer require yiisoft/rbac
```

Before we set off to define authorization data and perform access checking, we need to configure the

Check warning on line 84 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L84

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 84, "column": 8}}}, "severity": "WARNING"}

Check warning on line 84 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L84

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 84, "column": 77}}}, "severity": "WARNING"}
`\Yiisoft\Access\AccessCheckerInterface` in dependency container:

```php
Expand All @@ -97,11 +97,11 @@
];
```

`\Yiisoft\Rbac\Manager\PhpManager` uses a PHP script files to store authorization data. The files are located under

Check notice on line 100 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L100

[Microsoft.Passive] 'are located' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are located' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 100, "column": 99}}}, "severity": "INFO"}
`@rbac` alias. Make sure the directory and all the files in it are writable by the Web server process if permissions

Check notice on line 101 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L101

[Microsoft.Vocab] Verify your use of 'alias' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'alias' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 101, "column": 9}}}, "severity": "INFO"}
hierarchy needs to be changed online.

Check notice on line 102 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L102

[Microsoft.Passive] 'be changed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be changed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 102, "column": 20}}}, "severity": "INFO"}

### Building Authorization Data <span id="generating-rbac-data"></span>

Check notice on line 104 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L104

[Microsoft.Headings] 'Building Authorization Data' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Building Authorization Data' should use sentence-style capitalization.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 104, "column": 5}}}, "severity": "INFO"}

Building authorization data is all about the following tasks:

Expand All @@ -111,22 +111,22 @@
- associating rules with roles and permissions;
- assigning roles to users.

Depending on authorization flexibility requirements the tasks above could be done in different ways.

Check notice on line 114 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L114

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 114, "column": 63}}}, "severity": "INFO"}

Check notice on line 114 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L114

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 114, "column": 75}}}, "severity": "INFO"}
If your permissions hierarchy is meant to be changed by developers only, you can use either migrations

Check notice on line 115 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L115

[Microsoft.Passive] 'is meant' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is meant' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 115, "column": 31}}}, "severity": "INFO"}

Check notice on line 115 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L115

[Microsoft.Passive] 'be changed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be changed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 115, "column": 43}}}, "severity": "INFO"}
or a console command. Migration pro is that it could be executed along with other migrations. Console

Check notice on line 116 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L116

[Microsoft.Passive] 'be executed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be executed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 116, "column": 54}}}, "severity": "INFO"}
command pro is that you have a good overview of the hierarchy in the code rather than it being scattered

Check notice on line 117 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L117

[Microsoft.Passive] 'being scattered' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'being scattered' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 117, "column": 90}}}, "severity": "INFO"}
among multiple migrations.

Either way in the end you'll get the following RBAC hierarchy:

![Simple RBAC hierarchy](img/rbac-hierarchy-1.svg "Simple RBAC hierarchy")

In case you need permissions hierarchy to be formed dynamically you need a UI or a console command. API used to

Check notice on line 124 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L124

[Microsoft.Passive] 'be formed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be formed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 124, "column": 43}}}, "severity": "INFO"}
build the hierarchy itself won't be different.

### Using console command

If your permissions hierarchy doesn't change at all and you have a fixed number of users you can create a

Check notice on line 129 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L129

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 129, "column": 1}}}, "severity": "INFO"}
-[console command](../tutorial/console-applications.md) that will initialize authorization data once via
APIs offered by `\Yiisoft\Rbac\ManagerInterface`:

Expand Down Expand Up @@ -192,7 +192,7 @@
}
```

The command above could be executed from console the following way:

Check notice on line 195 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L195

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 195, "column": 13}}}, "severity": "INFO"}

Check notice on line 195 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L195

[Microsoft.Passive] 'be executed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be executed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 195, "column": 25}}}, "severity": "INFO"}

```
./vendor/bin/yii rbac/init
Expand All @@ -203,7 +203,7 @@

#### Using migrations

**TODO**: finish it when migrations are implemented.

Check notice on line 206 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L206

[Microsoft.Passive] 'are implemented' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are implemented' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 206, "column": 37}}}, "severity": "INFO"}

You can use [migrations](db-migrations.md)
to initialize and modify hierarchy via APIs offered by `\Yiisoft\Rbac\ManagerInterface`.
Expand Down Expand Up @@ -262,15 +262,15 @@
> If you don't want to hardcode which users have certain roles, don't put `->assign()` calls in migrations. Instead,
create either UI or console command to manage assignments.

Migration could be applied by using `./vendor/bin/yii migrate`.

Check notice on line 265 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L265

[Microsoft.Passive] 'be applied' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be applied' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 265, "column": 17}}}, "severity": "INFO"}

## Assigning roles to users

TODO: update when signup implemented in demo / template.

Author can create post, admin can update post and do everything author can.

Check notice on line 271 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L271

[Microsoft.Vocab] Verify your use of 'Author' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'Author' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 271, "column": 1}}}, "severity": "INFO"}

Check notice on line 271 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L271

[Microsoft.Vocab] Verify your use of 'author' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'author' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 271, "column": 65}}}, "severity": "INFO"}

If your application allows user signup you need to assign roles to these new users once. For example, in order for all

Check notice on line 273 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L273

[Microsoft.Vocab] Verify your use of 'allows' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'allows' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 273, "column": 21}}}, "severity": "INFO"}
signed up users to become authors in your advanced project template you need to modify `frontend\models\SignupForm::signup()`
as follows:

Expand Down Expand Up @@ -298,14 +298,14 @@
```

For applications that require complex access control with dynamically updated authorization data, special user interfaces
(i.e. admin panel) may need to be developed using APIs offered by `authManager`.

Check failure on line 301 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L301

[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 301, "column": 2}}}, "severity": "ERROR"}

Check notice on line 301 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L301

[Microsoft.Passive] 'be developed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be developed' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 301, "column": 32}}}, "severity": "INFO"}


### Using Rules <span id="using-rules"></span>

Check notice on line 304 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L304

[Microsoft.Headings] 'Using Rules' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Using Rules' should use sentence-style capitalization.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 304, "column": 5}}}, "severity": "INFO"}

As aforementioned, rules add additional constraint to roles and permissions. A rule is a class extending
from `\Yiisoft\Rbac\Rule`. It must implement the `execute()` method. In the hierarchy we've

Check warning on line 307 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L307

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 307, "column": 87}}}, "severity": "WARNING"}
created previously author cannot edit his own post. Let's fix it. First we need a rule to verify that the user is the post author:

Check notice on line 308 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L308

[Microsoft.Vocab] Verify your use of 'author' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'author' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 308, "column": 20}}}, "severity": "INFO"}

Check failure on line 308 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L308

[Microsoft.Contractions] Use 'can't' instead of 'cannot'.
Raw output
{"message": "[Microsoft.Contractions] Use 'can't' instead of 'cannot'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 308, "column": 27}}}, "severity": "ERROR"}

Check warning on line 308 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L308

[Microsoft.We] Try to avoid using first-person plural like 'Let's'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'Let's'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 308, "column": 53}}}, "severity": "WARNING"}

Check warning on line 308 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L308

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 308, "column": 73}}}, "severity": "WARNING"}

Check notice on line 308 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L308

[Microsoft.Vocab] Verify your use of 'author' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'author' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 308, "column": 124}}}, "severity": "INFO"}

```php
namespace App\User\Rbac;
Expand All @@ -331,8 +331,8 @@
}
```

The rule above checks if the `post` is created by user rule is checked for. We'll create a special permission `updateOwnPost` in the

Check notice on line 334 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L334

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 334, "column": 10}}}, "severity": "INFO"}

Check notice on line 334 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L334

[Microsoft.Passive] 'is created' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is created' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 334, "column": 37}}}, "severity": "INFO"}

Check notice on line 334 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L334

[Microsoft.Passive] 'is checked' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is checked' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 334, "column": 61}}}, "severity": "INFO"}

Check warning on line 334 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L334

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 334, "column": 77}}}, "severity": "WARNING"}
command we've used previously:

Check warning on line 335 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L335

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 335, "column": 9}}}, "severity": "WARNING"}

```php
/** @var \Yiisoft\Rbac\ManagerInterface $auth */
Expand All @@ -354,14 +354,14 @@
$auth->addChild($author, $updateOwnPost);
```

Now we have got the following hierarchy:

Check failure on line 357 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L357

[Microsoft.Contractions] Use 'we've' instead of 'we have'.
Raw output
{"message": "[Microsoft.Contractions] Use 'we've' instead of 'we have'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 357, "column": 5}}}, "severity": "ERROR"}

Check warning on line 357 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L357

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 357, "column": 5}}}, "severity": "WARNING"}

![RBAC hierarchy with a rule](img/rbac-hierarchy-2.svg "RBAC hierarchy with a rule")


### Access Check <span id="access-check"></span>

Check notice on line 362 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L362

[Microsoft.Headings] 'Access Check' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Access Check' should use sentence-style capitalization.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 362, "column": 5}}}, "severity": "INFO"}

The check is done similar to how it was done in the first section of this guide:

Check notice on line 364 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L364

[Microsoft.Passive] 'is done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is done' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 364, "column": 11}}}, "severity": "INFO"}

Check notice on line 364 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L364

[Microsoft.Passive] 'was done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'was done' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 364, "column": 37}}}, "severity": "INFO"}

```php
namespace App\Blog\Post;
Expand Down Expand Up @@ -399,11 +399,11 @@

The difference is that now checking for user's own post is part of the RBAC.

If the current user is Jane with `ID=1` we are starting at `createPost` and trying to get to `Jane`:

Check failure on line 402 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L402

[Microsoft.Contractions] Use 'we're' instead of 'we are'.
Raw output
{"message": "[Microsoft.Contractions] Use 'we're' instead of 'we are'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 402, "column": 41}}}, "severity": "ERROR"}

Check warning on line 402 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L402

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 402, "column": 41}}}, "severity": "WARNING"}

![Access check](img/rbac-access-check-1.svg "Access check")

In order to check if a user can update a post, we need to pass an extra parameter that is required by `AuthorRule` described before:

Check notice on line 406 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L406

[Microsoft.Wordiness] Consider using 'to' instead of 'In order to'.
Raw output
{"message": "[Microsoft.Wordiness] Consider using 'to' instead of 'In order to'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 406, "column": 1}}}, "severity": "INFO"}

Check warning on line 406 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L406

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 406, "column": 48}}}, "severity": "WARNING"}

Check failure on line 406 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L406

[Microsoft.Contractions] Use 'that's' instead of 'that is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'that's' instead of 'that is'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 406, "column": 83}}}, "severity": "ERROR"}

Check notice on line 406 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L406

[Microsoft.Passive] 'is required' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is required' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 406, "column": 88}}}, "severity": "INFO"}

```php
if ($user->can('updatePost', ['post' => $post])) {
Expand All @@ -416,17 +416,17 @@

![Access check](img/rbac-access-check-2.svg "Access check")

We are starting with the `updatePost` and going through `updateOwnPost`. In order to pass the access check, `AuthorRule`

Check failure on line 419 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L419

[Microsoft.Contractions] Use 'we're' instead of 'We are'.
Raw output
{"message": "[Microsoft.Contractions] Use 'we're' instead of 'We are'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 419, "column": 1}}}, "severity": "ERROR"}

Check warning on line 419 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L419

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 419, "column": 1}}}, "severity": "WARNING"}

Check notice on line 419 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L419

[Microsoft.Wordiness] Consider using 'to' instead of 'In order to'.
Raw output
{"message": "[Microsoft.Wordiness] Consider using 'to' instead of 'In order to'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 419, "column": 74}}}, "severity": "INFO"}
should return `true` from its `execute()` method. The method receives its `$params` from the `can()` method call, so the value is
`['post' => $post]`. If everything is fine, we will get to `author` which is assigned to John.

Check warning on line 421 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L421

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 421, "column": 45}}}, "severity": "WARNING"}

Check notice on line 421 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L421

[Microsoft.Passive] 'is assigned' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is assigned' looks like passive voice.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 421, "column": 75}}}, "severity": "INFO"}

In case of Jane it is a bit simpler since she is an admin:

Check failure on line 423 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L423

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 423, "column": 17}}}, "severity": "ERROR"}

Check notice on line 423 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L423

[Microsoft.Vocab] Verify your use of 'she' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'she' with the A-Z word list.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 423, "column": 43}}}, "severity": "INFO"}

![Access check](img/rbac-access-check-3.svg "Access check")

## Implementing your own access checker

In case RBAC does not suit your needs, you can implement your own access checker without changing application code:

Check failure on line 429 in guide/es/security/authorization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/authorization.md#L429

[Microsoft.Contractions] Use 'doesn't' instead of 'does not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'doesn't' instead of 'does not'.", "location": {"path": "guide/es/security/authorization.md", "range": {"start": {"line": 429, "column": 14}}}, "severity": "ERROR"}


```php
Expand Down
4 changes: 2 additions & 2 deletions guide/es/security/best-practices.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Security best practices

Below we'll review common security principles and describe how to avoid threats when developing applications using Yii.

Check warning on line 3 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L3

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 3, "column": 7}}}, "severity": "WARNING"}
Most of these principles are not unique to Yii alone but apply to website or software development in general,

Check notice on line 4 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L4

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 4, "column": 1}}}, "severity": "INFO"}

Check failure on line 4 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L4

[Microsoft.Contractions] Use 'aren't' instead of 'are not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'aren't' instead of 'are not'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 4, "column": 26}}}, "severity": "ERROR"}
so you will also find links for further reading on the general ideas behind these.


## Basic principles

There are two main principles when it comes to security no matter which application is being developed:

Check notice on line 10 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L10

[Microsoft.Passive] 'being developed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'being developed' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 10, "column": 88}}}, "severity": "INFO"}

1. Filter input.
2. Escape output.
Expand All @@ -15,9 +15,9 @@

### Filter input

Filter input means that input should never be considered safe, and you should always check if the value you've got is

Check notice on line 18 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L18

[Microsoft.Passive] 'be considered' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be considered' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 18, "column": 44}}}, "severity": "INFO"}
actually among allowed ones. For example, if we know that sorting could be done by three fields `title`, `created_at` and `status`

Check notice on line 19 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L19

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 19, "column": 30}}}, "severity": "INFO"}

Check warning on line 19 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L19

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 19, "column": 46}}}, "severity": "WARNING"}

Check notice on line 19 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L19

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 19, "column": 73}}}, "severity": "INFO"}
and the field could be supplied via user input, it's better to check the value we've got right where we're receiving it.

Check notice on line 20 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L20

[Microsoft.Passive] 'be supplied' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be supplied' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 20, "column": 21}}}, "severity": "INFO"}

Check warning on line 20 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L20

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 20, "column": 80}}}, "severity": "WARNING"}
In terms of basic PHP that would look like the following:

```php
Expand All @@ -37,7 +37,7 @@

### Escape output

Escape output means that depending on context where we're using data it should be escaped i.e. in context of HTML you

Check warning on line 40 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L40

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 40, "column": 53}}}, "severity": "WARNING"}

Check notice on line 40 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L40

[Microsoft.Passive] 'be escaped' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be escaped' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 40, "column": 80}}}, "severity": "INFO"}

Check failure on line 40 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L40

[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 40, "column": 91}}}, "severity": "ERROR"}
should escape `<`, `>` and alike special characters. In context of JavaScript or SQL it will be different set of characters.
Since it's error-prone to escape everything manually Yii provides various tools to perform escaping for different
contexts.
Expand All @@ -49,9 +49,9 @@
- <https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29>


## Avoiding SQL injections

Check notice on line 52 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L52

[Microsoft.Headings] 'Avoiding SQL injections' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Avoiding SQL injections' should use sentence-style capitalization.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 52, "column": 4}}}, "severity": "INFO"}

Check warning on line 52 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L52

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 52, "column": 13}}}, "severity": "WARNING"}

SQL injection happens when query text is formed by concatenating unescaped strings such as the following:

Check notice on line 54 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L54

[Microsoft.Passive] 'is formed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is formed' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 54, "column": 39}}}, "severity": "INFO"}

```php
$username = $_GET['username'];
Expand All @@ -65,13 +65,13 @@
SELECT * FROM user WHERE username = ''; DROP TABLE user; --'
```

This is a valid query that will search for users with empty username and then will drop `user` table most probably

Check notice on line 68 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L68

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 68, "column": 1}}}, "severity": "INFO"}
resulting in a broken website and data loss (you've set up regular backups, right?).

Make sure to either use PDO prepared statements directly or ensure that library you prefer is doing it.

Check notice on line 71 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L71

[Microsoft.Acronyms] 'PDO' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'PDO' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 71, "column": 25}}}, "severity": "INFO"}

Check notice on line 71 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L71

[Microsoft.Vocab] Verify your use of 'ensure' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'ensure' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 71, "column": 61}}}, "severity": "INFO"}
In case of prepared statements it's not possible to manipulate the query as was demonstrated above.

Check notice on line 72 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L72

[Microsoft.Wordiness] Consider using 'impossible' instead of 'not possible'.
Raw output
{"message": "[Microsoft.Wordiness] Consider using 'impossible' instead of 'not possible'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 72, "column": 37}}}, "severity": "INFO"}

Check notice on line 72 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L72

[Microsoft.Passive] 'was demonstrated' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'was demonstrated' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 72, "column": 77}}}, "severity": "INFO"}

Check notice on line 72 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L72

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 72, "column": 94}}}, "severity": "INFO"}

If data is used to specify column names or table names the best thing to do is to allow only predefined set of values:

Check notice on line 74 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L74

[Microsoft.Passive] 'is used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is used' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 74, "column": 9}}}, "severity": "INFO"}

Check notice on line 74 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L74

[Microsoft.Vocab] Verify your use of 'allow' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'allow' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 74, "column": 83}}}, "severity": "INFO"}

```php
function actionList($orderBy = null)
Expand All @@ -89,18 +89,18 @@
- <https://www.owasp.org/index.php/SQL_Injection>


## Avoiding XSS

Check notice on line 92 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L92

[Microsoft.Headings] 'Avoiding XSS' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Avoiding XSS' should use sentence-style capitalization.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 92, "column": 4}}}, "severity": "INFO"}

Check warning on line 92 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L92

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 92, "column": 13}}}, "severity": "WARNING"}

XSS or cross-site scripting happens when output isn't escaped properly when outputting HTML to the browser. For example,

Check warning on line 94 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L94

[Microsoft.Adverbs] Remove 'properly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'properly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 94, "column": 63}}}, "severity": "WARNING"}

Check notice on line 94 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L94

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 94, "column": 109}}}, "severity": "INFO"}
if user can enter his name and instead of `Alexander` he enters `<script>alert('Hello!');</script>`, every page that

Check notice on line 95 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L95

[Microsoft.Vocab] Verify your use of 'he' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'he' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 95, "column": 55}}}, "severity": "INFO"}

Check notice on line 95 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L95

[Microsoft.Vocab] Verify your use of 'alert' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'alert' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 95, "column": 74}}}, "severity": "INFO"}
outputs user name without escaping it will execute JavaScript `alert('Hello!');` resulting in alert box popping up

Check notice on line 96 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L96

[Microsoft.Vocab] Verify your use of 'alert' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'alert' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 96, "column": 95}}}, "severity": "INFO"}
in a browser. Depending on website instead of innocent alert such script could send messages using your name or even
perform bank transactions.

Avoiding XSS is quite easy in Yii. There are generally two cases:

Check warning on line 100 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L100

[Microsoft.Adverbs] Remove 'quite' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'quite' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 100, "column": 17}}}, "severity": "WARNING"}

Check warning on line 100 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L100

[Microsoft.Adverbs] Remove 'generally' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'generally' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 100, "column": 46}}}, "severity": "WARNING"}

1. You want data to be outputted as plain text.

Check notice on line 102 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L102

[Microsoft.Passive] 'be outputted' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be outputted' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 102, "column": 21}}}, "severity": "INFO"}
2. You want data to be outputted as HTML.

Check notice on line 103 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L103

[Microsoft.Passive] 'be outputted' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be outputted' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 103, "column": 21}}}, "severity": "INFO"}

If all you need is plain text then escaping is as easy as the following:

Expand All @@ -109,42 +109,42 @@
<?= \Yiisoft\Html\Html::encode($username) ?>
```

If it should be HTML we could get some help from [HtmlPurifier](http://htmlpurifier.org/).
If it should be HTML we could get some help from [HtmlPurifier](https://htmlpurifier.org/).

Check warning on line 112 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L112

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 112, "column": 22}}}, "severity": "WARNING"}
Note that HtmlPurifier processing is quite heavy so consider adding caching.

Check warning on line 113 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L113

[Microsoft.Adverbs] Remove 'quite' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'quite' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 113, "column": 38}}}, "severity": "WARNING"}

Further reading on the topic:

- <https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29>


## Avoiding CSRF

Check notice on line 120 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L120

[Microsoft.Headings] 'Avoiding CSRF' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Avoiding CSRF' should use sentence-style capitalization.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 120, "column": 4}}}, "severity": "INFO"}

Check notice on line 120 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L120

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 120, "column": 13}}}, "severity": "INFO"}

Check warning on line 120 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L120

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 120, "column": 13}}}, "severity": "WARNING"}

CSRF is an abbreviation for cross-site request forgery. The idea is that many applications assume that requests coming

Check notice on line 122 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L122

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 122, "column": 1}}}, "severity": "INFO"}
from a user browser are made by the user themselves. This assumption could be false.

Check notice on line 123 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L123

[Microsoft.Passive] 'are made' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are made' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 123, "column": 21}}}, "severity": "INFO"}

For example, the website `an.example.com` has a `/logout` URL that, when accessed using a simple GET request, logs the user out. As long

Check warning on line 125 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L125

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 125, "column": 59}}}, "severity": "WARNING"}
as it's requested by the user themselves everything is OK, but one day bad guys are somehow posting
`<img src="http://an.example.com/logout">` on a forum the user visits frequently. The browser doesn't make any difference between

Check notice on line 127 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L127

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 127, "column": 83}}}, "severity": "INFO"}
requesting an image or requesting a page so when the user opens a page with such a manipulated `<img>` tag,
the browser will send the GET request to that URL and the user will be logged out from `an.example.com`.

Check warning on line 129 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L129

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 129, "column": 47}}}, "severity": "WARNING"}

Check notice on line 129 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L129

[Microsoft.Passive] 'be logged' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be logged' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 129, "column": 69}}}, "severity": "INFO"}

That's the basic idea of how a CSRF attack works. One can say that logging out a user is not a serious thing,

Check notice on line 131 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L131

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 131, "column": 32}}}, "severity": "INFO"}

Check notice on line 131 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L131

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 131, "column": 51}}}, "severity": "INFO"}

Check failure on line 131 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L131

[Microsoft.Contractions] Use 'isn't' instead of 'is not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 131, "column": 87}}}, "severity": "ERROR"}
however this was just an example, there are much more things one could do using this approach, for example triggering payments
or changing data. Imagine that some website has an URL

Check warning on line 133 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L133

[Microsoft.Terms] Prefer 'a URL' over 'an URL'.
Raw output
{"message": "[Microsoft.Terms] Prefer 'a URL' over 'an URL'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 133, "column": 49}}}, "severity": "WARNING"}
`http://an.example.com/purse/transfer?to=anotherUser&amount=2000`. Accessing it using GET request, causes transfer of $2000
from authorized user account to user `anotherUser`. We know, that the browser will always send GET request to load an image,

Check warning on line 135 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L135

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 135, "column": 53}}}, "severity": "WARNING"}
so we can modify code to accept only POST requests on that URL. Unfortunately, this will not save us, because an attacker

Check warning on line 136 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L136

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 136, "column": 4}}}, "severity": "WARNING"}

Check warning on line 136 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L136

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 136, "column": 60}}}, "severity": "WARNING"}

Check warning on line 136 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L136

[Microsoft.Adverbs] Remove 'Unfortunately' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'Unfortunately' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 136, "column": 65}}}, "severity": "WARNING"}

Check failure on line 136 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L136

[Microsoft.Contractions] Use 'won't' instead of 'will not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'won't' instead of 'will not'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 136, "column": 85}}}, "severity": "ERROR"}

Check warning on line 136 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L136

[Microsoft.We] Try to avoid using first-person plural like 'us'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'us'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 136, "column": 99}}}, "severity": "WARNING"}
can put some JavaScript code instead of `<img>` tag, which allows to send POST requests to that URL as well.

Check notice on line 137 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L137

[Microsoft.Vocab] Verify your use of 'allows' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'allows' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 137, "column": 60}}}, "severity": "INFO"}

Check warning on line 137 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L137

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 137, "column": 97}}}, "severity": "WARNING"}

For this reason, Yii applies additional mechanisms to protect against CSRF attacks.

Check notice on line 139 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L139

[Microsoft.Vocab] Verify your use of 'against' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'against' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 139, "column": 63}}}, "severity": "INFO"}

Check notice on line 139 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L139

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 139, "column": 71}}}, "severity": "INFO"}

In order to avoid CSRF you should always:

Check notice on line 141 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L141

[Microsoft.Wordiness] Consider using 'to' instead of 'In order to'.
Raw output
{"message": "[Microsoft.Wordiness] Consider using 'to' instead of 'In order to'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 141, "column": 1}}}, "severity": "INFO"}

Check notice on line 141 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L141

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 141, "column": 19}}}, "severity": "INFO"}

1. Follow HTTP specification i.e. GET should not change application state.

Check failure on line 143 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L143

[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 143, "column": 30}}}, "severity": "ERROR"}

Check failure on line 143 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L143

[Microsoft.Contractions] Use 'shouldn't' instead of 'should not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'shouldn't' instead of 'should not'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 143, "column": 39}}}, "severity": "ERROR"}
See [RFC2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) for more details.
2. Keep Yii CSRF protection enabled.

Check notice on line 145 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L145

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 145, "column": 13}}}, "severity": "INFO"}

In Yii CSRF protection is implemented as `Yiisoft\Yii\Web\Middleware\Csrf` middleware. Ensure it is in your application

Check notice on line 147 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L147

[Microsoft.Acronyms] 'CSRF' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'CSRF' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 147, "column": 8}}}, "severity": "INFO"}

Check notice on line 147 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L147

[Microsoft.Passive] 'is implemented' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is implemented' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 147, "column": 24}}}, "severity": "INFO"}

Check notice on line 147 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L147

[Microsoft.Vocab] Verify your use of 'Ensure' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'Ensure' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 147, "column": 88}}}, "severity": "INFO"}

Check failure on line 147 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L147

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 147, "column": 95}}}, "severity": "ERROR"}
middleware stack.

Further reading on the topic:
Expand All @@ -155,24 +155,24 @@

## Avoiding file exposure

By default, server webroot is meant to be pointed to `public` directory where `index.php` is. In case of shared hosting

Check notice on line 158 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L158

[Microsoft.Passive] 'is meant' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is meant' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 158, "column": 28}}}, "severity": "INFO"}

Check notice on line 158 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L158

[Microsoft.Passive] 'be pointed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be pointed' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 158, "column": 40}}}, "severity": "INFO"}
environments it could be impossible to achieve, so we'll end up with all the code, configs and logs in server webroot.

Check warning on line 159 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L159

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 159, "column": 52}}}, "severity": "WARNING"}

If it's the case don't forget to deny access to everything except `web`. If it can't be done consider hosting your

Check notice on line 161 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L161

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 161, "column": 86}}}, "severity": "INFO"}
application elsewhere.


## Avoiding debug info and tools in production

In debug mode Yii shows quite verbose errors which are certainly helpful for development. The thing is that these

Check warning on line 167 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L167

[Microsoft.Adverbs] Remove 'quite' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'quite' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 167, "column": 25}}}, "severity": "WARNING"}
verbose errors are handy for attacker as well since these could reveal database structure, configuration values and
parts of your code.

Never run production applications with debugger or Gii accessible to everyone. It could be used to get information

Check notice on line 171 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L171

[Microsoft.Vocab] Verify your use of 'accessible' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'accessible' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 171, "column": 56}}}, "severity": "INFO"}

Check notice on line 171 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L171

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 171, "column": 89}}}, "severity": "INFO"}
about database structure, code and to simply rewrite code with what's generated by Gii.

Debug toolbar should be avoided at production unless really necessary. It exposes all the application and config

Check notice on line 174 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L174

[Microsoft.Passive] 'be avoided' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be avoided' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 174, "column": 22}}}, "severity": "INFO"}

Check warning on line 174 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L174

[Microsoft.Adverbs] Remove 'really' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'really' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 174, "column": 54}}}, "severity": "WARNING"}
details possible. If you absolutely need it check twice that access is properly restricted to your IP only.

Check warning on line 175 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L175

[Microsoft.Adverbs] Remove 'properly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'properly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 175, "column": 72}}}, "severity": "WARNING"}

Further reading on the topic:

Expand All @@ -180,27 +180,27 @@
- <https://www.owasp.org/index.php/Top_10_2007-Information_Leakage>


## Using secure connection over TLS

Check warning on line 183 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L183

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 183, "column": 33}}}, "severity": "WARNING"}

Check notice on line 183 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L183

[Microsoft.Acronyms] 'TLS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'TLS' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 183, "column": 33}}}, "severity": "INFO"}

Yii provides features that rely on cookies and/or PHP sessions. These can be vulnerable in case your connection is

Check notice on line 185 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L185

[Microsoft.Vocab] Verify your use of 'and/or' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'and/or' with the A-Z word list.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 185, "column": 44}}}, "severity": "INFO"}

Check notice on line 185 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L185

[Microsoft.Passive] 'is compromised' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is compromised' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 185, "column": 113}}}, "severity": "INFO"}
compromised. The risk is reduced if the app uses secure connection via TLS (often referred to as [SSL](https://en.wikipedia.org/wiki/Transport_Layer_Security)).

Check notice on line 186 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L186

[Microsoft.Passive] 'is reduced' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is reduced' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 186, "column": 23}}}, "severity": "INFO"}

Check notice on line 186 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L186

[Microsoft.Acronyms] 'TLS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'TLS' has no definition.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 186, "column": 72}}}, "severity": "INFO"}

Nowadays, anyone could get a certificate for free and automatically update it thanks to [Let's Encrypt](https://letsencrypt.org/).

Check warning on line 188 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L188

[Microsoft.We] Try to avoid using first-person plural like 'Let's'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'Let's'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 188, "column": 90}}}, "severity": "WARNING"}

## Secure Server configuration

Check notice on line 190 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L190

[Microsoft.Headings] 'Secure Server configuration' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Secure Server configuration' should use sentence-style capitalization.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 190, "column": 4}}}, "severity": "INFO"}

The purpose of this section is to highlight risks that need to be considered when creating a

Check notice on line 192 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L192

[Microsoft.Passive] 'be considered' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be considered' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 192, "column": 64}}}, "severity": "INFO"}
server configuration for serving a Yii based website. Besides the points covered here there may
be other security related configuration options to be considered, so do not consider this section to

Check notice on line 194 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L194

[Microsoft.Passive] 'be considered' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be considered' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 194, "column": 52}}}, "severity": "INFO"}

Check failure on line 194 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L194

[Microsoft.Contractions] Use 'don't' instead of 'do not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'don't' instead of 'do not'.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 194, "column": 70}}}, "severity": "ERROR"}
be complete.

### Avoiding `Host`-header attacks

If the webserver is configured to serve the same site independent of the value of the `Host` header, this information may

Check notice on line 199 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L199

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 199, "column": 1}}}, "severity": "INFO"}

Check notice on line 199 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L199

[Microsoft.Passive] 'is configured' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is configured' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 199, "column": 18}}}, "severity": "INFO"}
not be reliable and [may be faked by the user sending the HTTP request](https://www.acunetix.com/vulnerabilities/web/host-header-attack).

Check notice on line 200 in guide/es/security/best-practices.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/security/best-practices.md#L200

[Microsoft.Passive] 'be faked' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be faked' looks like passive voice.", "location": {"path": "guide/es/security/best-practices.md", "range": {"start": {"line": 200, "column": 26}}}, "severity": "INFO"}
In such situations you should fix your webserver configuration to serve the site only for specified host names.

For more information about the server configuration, please refer to the documentation of your webserver:

- Apache 2: <http://httpd.apache.org/docs/trunk/vhosts/examples.html#defaultallports>
- Apache 2: <https://httpd.apache.org/docs/trunk/vhosts/examples.html#defaultallports>
- Nginx: <https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/>
2 changes: 1 addition & 1 deletion guide/es/start/hello.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Saying Hello

Check notice on line 1 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L1

[Microsoft.Headings] 'Saying Hello' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Saying Hello' should use sentence-style capitalization.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

> Note: This document reflects current configuration. Yii team is going to make it significantly simpler before release.

Expand All @@ -16,11 +16,11 @@
3. how an application dispatches requests to [handlers](../structure/handler.md).


## Creating a Handler <span id="creating-handler"></span>

Check notice on line 19 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L19

[Microsoft.Headings] 'Creating a Handler' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Creating a Handler' should use sentence-style capitalization.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 19, "column": 4}}}, "severity": "INFO"}

For the "Hello" task, you will create a `Hello` class with `say` method that reads
a `message` parameter from the request and displays that message back to the user. If the request
does not provide a `message` parameter, the action will display the default "Hello" message.

Check failure on line 23 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L23

[Microsoft.Contractions] Use 'doesn't' instead of 'does not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'doesn't' instead of 'does not'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 23, "column": 1}}}, "severity": "ERROR"}

Create `src/Controller/Hello.php`:

Expand Down Expand Up @@ -53,19 +53,19 @@
}
```

The `say` method in our example is given `$request` parameter that we can use to obtain

Check warning on line 56 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L56

[Microsoft.We] Try to avoid using first-person plural like 'our'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'our'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 56, "column": 21}}}, "severity": "WARNING"}

Check notice on line 56 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L56

[Microsoft.Passive] 'is given' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is given' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 56, "column": 33}}}, "severity": "INFO"}

Check warning on line 56 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L56

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 56, "column": 68}}}, "severity": "WARNING"}
message, whose value defaults to `"Hello"` (in
the same way you set a default value for any function or method argument in PHP). When the application

Check notice on line 58 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L58

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 58, "column": 83}}}, "severity": "INFO"}
receives a request and determines that the `say` action is responsible for handling said request, the application will
populate this parameter with the same named parameter found in the request. In other words, if the request includes
a `message` parameter with a value of `"Goodbye"`, the `$message` variable within the action will be assigned that value.

Check notice on line 61 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L61

[Microsoft.Passive] 'be assigned' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be assigned' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 61, "column": 99}}}, "severity": "INFO"}

The response returned goes through [middleware stack](../structure/middleware.md) and then is outputted to end user

Check notice on line 63 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L63

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 63, "column": 1}}}, "severity": "INFO"}

Check notice on line 63 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L63

[Microsoft.Passive] 'is outputted' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is outputted' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 63, "column": 92}}}, "severity": "INFO"}
via emitter.

## Configuring router

Now to map our handler to URL we need to configure router. We will use a factory

Check warning on line 68 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L68

[Microsoft.We] Try to avoid using first-person plural like 'our'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'our'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 68, "column": 12}}}, "severity": "WARNING"}

Check warning on line 68 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L68

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 68, "column": 27}}}, "severity": "WARNING"}

Check warning on line 68 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L68

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 68, "column": 31}}}, "severity": "WARNING"}

Check warning on line 68 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L68

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 68, "column": 60}}}, "severity": "WARNING"}
to create the configured router. Create `src/Factory/AppRouterFactory`:

```php
Expand Down Expand Up @@ -97,10 +97,10 @@
}
```

In the above we are using FastRoute as routing engine and configuring two routes. For each route

Check notice on line 100 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L100

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 100, "column": 8}}}, "severity": "INFO"}

Check failure on line 100 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L100

[Microsoft.Contractions] Use 'we're' instead of 'we are'.
Raw output
{"message": "[Microsoft.Contractions] Use 'we're' instead of 'we are'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 100, "column": 14}}}, "severity": "ERROR"}

Check warning on line 100 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L100

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 100, "column": 14}}}, "severity": "WARNING"}
a "controller" `Hello` will be created and its "action" method `say` will be invoked.

Check notice on line 101 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L101

[Microsoft.Passive] 'be created' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be created' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 101, "column": 29}}}, "severity": "INFO"}

Check notice on line 101 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L101

[Microsoft.Passive] 'be invoked' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be invoked' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 101, "column": 75}}}, "severity": "INFO"}

The factory class should be used in the DI container to define router instance. To do that edit `config/web.php` by adding:

Check notice on line 103 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L103

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 103, "column": 26}}}, "severity": "INFO"}

```php
use Yiisoft\Router\FastRoute\UrlGenerator;
Expand All @@ -121,20 +121,20 @@

## Trying it out <span id="trying-it-out"></span>

After creating the action and the view, start a web server with `./yii serve` and follow the following URL:

Check warning on line 124 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L124

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 124, "column": 104}}}, "severity": "WARNING"}

```
http://localhost:8080/say/Hello+World
```

This URL will result in a page displaying "The message is: Hello World".

Check warning on line 130 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L130

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 130, "column": 6}}}, "severity": "WARNING"}

Check failure on line 130 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L130

[Microsoft.Quotes] Punctuation should be inside the quotes.
Raw output
{"message": "[Microsoft.Quotes] Punctuation should be inside the quotes.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 130, "column": 43}}}, "severity": "ERROR"}

If you omit the `message` parameter in the URL, you would see the page display "The message is: Hello!".

Check warning on line 132 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L132

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 132, "column": 44}}}, "severity": "WARNING"}

Check failure on line 132 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L132

[Microsoft.Quotes] Punctuation should be inside the quotes.
Raw output
{"message": "[Microsoft.Quotes] Punctuation should be inside the quotes.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 132, "column": 80}}}, "severity": "ERROR"}

## Creating a View Template <span id="creating-view-template"></span>

Check notice on line 134 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L134

[Microsoft.Headings] 'Creating a View Template' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Creating a View Template' should use sentence-style capitalization.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 134, "column": 4}}}, "severity": "INFO"}

Usually the task is more complicated than printing out hello world and involves rendering some complex
HTML. For this task it is handy to use [views templates](structure/view.md). They are scripts you

Check failure on line 137 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L137

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 137, "column": 21}}}, "severity": "ERROR"}

Check failure on line 137 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L137

[Microsoft.Contractions] Use 'they're' instead of 'They are'.
Raw output
{"message": "[Microsoft.Contractions] Use 'they're' instead of 'They are'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 137, "column": 78}}}, "severity": "ERROR"}
write to generate a response's body.

For the "Hello" task, you will create a `/views/say/say.php` view that prints the `message` parameter received from the action method:
Expand All @@ -146,15 +146,15 @@
<?= Html::encode($message) ?>
```

Note that in the above code, the `message` parameter is HTML-encoded

Check notice on line 149 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L149

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 149, "column": 18}}}, "severity": "INFO"}
before being printed. This is necessary as the parameter comes from an end user, making it vulnerable to

Check notice on line 150 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L150

[Microsoft.Passive] 'being printed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'being printed' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 150, "column": 8}}}, "severity": "INFO"}
[cross-site scripting (XSS) attacks](http://en.wikipedia.org/wiki/Cross-site_scripting) by embedding
[cross-site scripting (XSS) attacks](https://en.wikipedia.org/wiki/Cross-site_scripting) by embedding
malicious JavaScript code in the parameter.

Naturally, you may put more content in the `say` view. The content can consist of HTML tags, plain text, and even

Check warning on line 154 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L154

[Microsoft.Adverbs] Remove 'Naturally' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'Naturally' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 154, "column": 1}}}, "severity": "WARNING"}
PHP statements. In fact, the `say` view is a PHP script that is executed by the view service.

Check failure on line 155 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L155

[Microsoft.Contractions] Use 'that's' instead of 'that is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'that's' instead of 'that is'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 155, "column": 57}}}, "severity": "ERROR"}

Check notice on line 155 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L155

[Microsoft.Passive] 'is executed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is executed' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 155, "column": 62}}}, "severity": "INFO"}

To use the view we need to modify `src/Controller/Hello.php`:

Check warning on line 157 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L157

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 157, "column": 17}}}, "severity": "WARNING"}

```php
<?php
Expand Down Expand Up @@ -205,10 +205,10 @@
}
```

Here we're using `ViewContextInterface` tell a `view` service where to get templates. Producing response from a

Check warning on line 208 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L208

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 208, "column": 6}}}, "severity": "WARNING"}
template and parameters is done with `render()` method.

Check notice on line 209 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L209

[Microsoft.Passive] 'is done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is done' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 209, "column": 25}}}, "severity": "INFO"}

Sine we've used aliases, we have to configure them in DI container:

Check warning on line 211 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L211

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 211, "column": 6}}}, "severity": "WARNING"}

Check failure on line 211 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L211

[Microsoft.Contractions] Use 'we've' instead of 'we have'.
Raw output
{"message": "[Microsoft.Contractions] Use 'we've' instead of 'we have'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 211, "column": 26}}}, "severity": "ERROR"}

Check warning on line 211 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L211

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 211, "column": 26}}}, "severity": "WARNING"}

```php
use Yiisoft\Aliases\Aliases;
Expand All @@ -230,7 +230,7 @@

In this section, you have touched the handler and view parts of the typical web application.
You created a handler as part of a class to handle a specific request. And you also created a view
to compose the response's content. In this simple example, no data source was involved as the only data used was the `message` parameter.

Check notice on line 233 in guide/es/start/hello.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/hello.md#L233

[Microsoft.Passive] 'was involved' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'was involved' looks like passive voice.", "location": {"path": "guide/es/start/hello.md", "range": {"start": {"line": 233, "column": 75}}}, "severity": "INFO"}

You have also learned about routing in Yii, which act as the bridge between user requests and handlers.

Expand Down
6 changes: 3 additions & 3 deletions guide/es/start/installation.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Installing Yii

Check notice on line 1 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L1

[Microsoft.Headings] 'Installing Yii' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Installing Yii' should use sentence-style capitalization.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

You can install Yii using the [Composer](https://getcomposer.org) package manager.

Standard installations of Yii result in both the framework packages and a project template being downloaded and installed.

Check notice on line 5 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L5

[Microsoft.Passive] 'being downloaded' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'being downloaded' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 5, "column": 92}}}, "severity": "INFO"}
A project template is a working Yii project implementing some basic features, such as login, contact form, etc.
Its code is organized in a recommended way. Therefore, it can serve as a good starting point for your projects.

Check notice on line 7 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L7

[Microsoft.Passive] 'is organized' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is organized' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 7, "column": 10}}}, "severity": "INFO"}

## Installing Composer

Check notice on line 9 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L9

[Microsoft.Headings] 'Installing Composer' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Installing Composer' should use sentence-style capitalization.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 9, "column": 4}}}, "severity": "INFO"}

If you do not already have Composer installed, you may do so by following the instructions at

Check notice on line 11 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L11

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 11, "column": 1}}}, "severity": "INFO"}

Check failure on line 11 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L11

[Microsoft.Contractions] Use 'don't' instead of 'do not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'don't' instead of 'do not'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 11, "column": 8}}}, "severity": "ERROR"}
[getcomposer.org](https://getcomposer.org/download/). On Linux and Mac OS X, you'll run the following commands:

```bash
Expand All @@ -20,17 +20,17 @@

Please refer to the [Troubleshooting section of the Composer Documentation](https://getcomposer.org/doc/articles/troubleshooting.md)
if you encounter any problems.
If you are new to Composer, we also recommend reading at least the [Basic usage section](https://getcomposer.org/doc/01-basic-usage.md)

Check warning on line 23 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L23

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 23, "column": 29}}}, "severity": "WARNING"}
of the Composer documentation.

In this guide, all composer commands assume you have installed composer [globally](https://getcomposer.org/doc/00-intro.md#globally)
so that it is available as the `composer` command. If you are using the `composer.phar` in the local directory instead,

Check failure on line 27 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L27

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 27, "column": 9}}}, "severity": "ERROR"}
you have to adjust the example commands accordingly.

If you had Composer already installed before, make sure you use an up to date version. You can update Composer
by running `composer self-update`.

## Installing Yii <span id="installing-from-composer"></span>

Check notice on line 33 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L33

[Microsoft.Headings] 'Installing Yii' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Installing Yii' should use sentence-style capitalization.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 33, "column": 4}}}, "severity": "INFO"}

With Composer installed, you can install Yii application template by running the following command
under a Web-accessible folder:
Expand All @@ -49,21 +49,21 @@
> composer create-project --stability=dev yiisoft/yii-demo app
> ```
>
> Note that the development version of Yii should not be used for production as it may break your running code.

Check failure on line 52 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L52

[Microsoft.Contractions] Use 'shouldn't' instead of 'should not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'shouldn't' instead of 'should not'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 52, "column": 44}}}, "severity": "ERROR"}

Check notice on line 52 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L52

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 52, "column": 55}}}, "severity": "INFO"}

## Using individual packages

Many Yii packages could be used separately from the framework via Composer. Framework-specific ones

Check notice on line 56 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L56

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 56, "column": 25}}}, "severity": "INFO"}

Check warning on line 56 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L56

[Microsoft.Adverbs] Remove 'separately' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'separately' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 56, "column": 33}}}, "severity": "WARNING"}
are prefixed with `yii-`.

Check notice on line 57 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L57

[Microsoft.Passive] 'are prefixed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are prefixed' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 57, "column": 1}}}, "severity": "INFO"}

## Installing Assets <span id="installing-assets"></span>

Check notice on line 59 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L59

[Microsoft.Headings] 'Installing Assets' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Installing Assets' should use sentence-style capitalization.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 59, "column": 4}}}, "severity": "INFO"}

...

Check warning on line 61 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L61

[Microsoft.Ellipses] In general, don't use an ellipsis.
Raw output
{"message": "[Microsoft.Ellipses] In general, don't use an ellipsis.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 61, "column": 1}}}, "severity": "WARNING"}


## Verifying the Installation <span id="verifying-installation"></span>

After installation is done, either configure your web server (see next section) or use the

Check notice on line 66 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L66

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 66, "column": 1}}}, "severity": "INFO"}

Check notice on line 66 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L66

[Microsoft.Passive] 'is done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is done' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 66, "column": 20}}}, "severity": "INFO"}
[built-in PHP web server](https://secure.php.net/manual/en/features.commandline.webserver.php) by running the following
console command while in the project `public` directory:

Expand All @@ -78,7 +78,7 @@
../vendor/bin/yii serve --port=8888
```

You can use your browser to access the installed Yii application with the following URL:

Check warning on line 81 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L81

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 81, "column": 85}}}, "severity": "WARNING"}

```
http://localhost:8080/
Expand All @@ -86,29 +86,29 @@

![Successful Installation of Yii](images/start-app-installed.png)

You should see the above "Congratulations!" page in your browser.

Check notice on line 89 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L89

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 89, "column": 20}}}, "severity": "INFO"}


## Configuring Web Servers <span id="configuring-web-servers"></span>

Check notice on line 92 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L92

[Microsoft.Headings] 'Configuring Web Servers' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Configuring Web Servers' should use sentence-style capitalization.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 92, "column": 4}}}, "severity": "INFO"}

> Info: You may skip this subsection for now if you are just test-driving Yii with no intention
of deploying it to a production server.

The application installed according to the above instructions should work out of the box with either

Check notice on line 97 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L97

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 97, "column": 1}}}, "severity": "INFO"}

Check notice on line 97 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L97

[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'above' with the A-Z word list.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 97, "column": 44}}}, "severity": "INFO"}
an [Apache HTTP server](http://httpd.apache.org/) or an [Nginx HTTP server](http://nginx.org/), on
an [Apache HTTP server](https://httpd.apache.org/) or an [Nginx HTTP server](https://nginx.org/), on
Windows, Mac OS X, or Linux running PHP 7.2 or higher.

On a production server, you may want to configure your Web server so that the application can be accessed

Check notice on line 101 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L101

[Microsoft.Passive] 'be accessed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be accessed' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 101, "column": 95}}}, "severity": "INFO"}
via the URL `http://www.example.com/index.php` instead of `http://www.example.com/app/public/index.php`. Such configuration
requires pointing the document root of your Web server to the `app/public` folder. You may also
want to hide `index.php` from the URL, as described in the [Routing and URL Creation](runtime-routing.md) section.

Check warning on line 104 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L104

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 104, "column": 35}}}, "severity": "WARNING"}

Check warning on line 104 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L104

[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.
Raw output
{"message": "[Microsoft.GeneralURL] For a general audience, use 'address' rather than 'URL'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 104, "column": 73}}}, "severity": "WARNING"}
In this subsection, you'll learn how to configure your Apache or Nginx server to achieve these goals.

> Info: By setting `app/public` as the document root, you also prevent end users from accessing
your private application code and sensitive data files that are stored in the sibling directories

Check notice on line 108 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L108

[Microsoft.Passive] 'are stored' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are stored' looks like passive voice.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 108, "column": 61}}}, "severity": "INFO"}
of `app/public`. Denying access to those other folders is a security improvement.

> Info: If your application will run in a shared hosting environment where you do not have permission

Check failure on line 111 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L111

[Microsoft.Contractions] Use 'don't' instead of 'do not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'don't' instead of 'do not'.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 111, "column": 80}}}, "severity": "ERROR"}
to modify its Web server configuration, you may still adjust the structure of your application for better security. Please refer to
the [Shared Hosting Environment](tutorial-shared-hosting.md) section for more details.

Expand Down Expand Up @@ -164,7 +164,7 @@

### Nginx <span id="nginx"></span>

To use [Nginx](http://wiki.nginx.org/), you should install PHP as an [FPM SAPI](https://secure.php.net/install.fpm).
To use [Nginx](https://wiki.nginx.org/), you should install PHP as an [FPM SAPI](https://secure.php.net/install.fpm).

Check notice on line 167 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L167

[Microsoft.Acronyms] 'FPM' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'FPM' has no definition.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 167, "column": 72}}}, "severity": "INFO"}

Check notice on line 167 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L167

[Microsoft.Acronyms] 'SAPI' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'SAPI' has no definition.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 167, "column": 76}}}, "severity": "INFO"}
You may use the following Nginx configuration, replacing `path/to/app/public` with the actual path for
`app/public` and `mysite.test` with the actual hostname to serve.

Expand Down Expand Up @@ -217,11 +217,11 @@
to avoid many unnecessary system `stat()` calls.

Also note that when running an HTTPS server, you need to add `fastcgi_param HTTPS on;` so that Yii
can properly detect if a connection is secure.

Check warning on line 220 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L220

[Microsoft.Adverbs] Remove 'properly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'properly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 220, "column": 5}}}, "severity": "WARNING"}

### IIS <span id="iss"></span>

Check warning on line 222 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L222

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 222, "column": 5}}}, "severity": "WARNING"}

Check notice on line 222 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L222

[Microsoft.Acronyms] 'IIS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'IIS' has no definition.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 222, "column": 5}}}, "severity": "INFO"}

To use [IIS](https://www.iis.net/), put `Web.config` and `index.php` to public accessible directory. The following

Check notice on line 224 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L224

[Microsoft.Acronyms] 'IIS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'IIS' has no definition.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 224, "column": 9}}}, "severity": "INFO"}

Check notice on line 224 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L224

[Microsoft.Vocab] Verify your use of 'accessible' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'accessible' with the A-Z word list.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 224, "column": 80}}}, "severity": "INFO"}
configuration goes to `Web.config`:

```xml
Expand All @@ -245,9 +245,9 @@
```


### lighttpd <span id="lighttpd"></span>

Check notice on line 248 in guide/es/start/installation.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/start/installation.md#L248

[Microsoft.Headings] 'lighttpd' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'lighttpd' should use sentence-style capitalization.", "location": {"path": "guide/es/start/installation.md", "range": {"start": {"line": 248, "column": 5}}}, "severity": "INFO"}

To use [lighttpd](http://www.lighttpd.net/) >= 1.4.24 put `index.php` to webroot and add the following to configuration:
To use [lighttpd](https://www.lighttpd.net/) >= 1.4.24 put `index.php` to webroot and add the following to configuration:

```
url.rewrite-if-not-file = ("(.*)" => "/index.php/$0")
Expand Down
4 changes: 2 additions & 2 deletions guide/es/structure/package.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Packages

Reusable code could be released as [Composer package](https://getcomposer.org/doc/05-repositories.md#package).

Check notice on line 3 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L3

[Microsoft.Passive] 'be released' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be released' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 3, "column": 21}}}, "severity": "INFO"}
It could be an infrastructure library, a module representing one of the application contexts or, basically, any
reusable code.

Expand All @@ -11,18 +11,18 @@
[create your own repository](https://getcomposer.org/doc/05-repositories.md#repository) and configure Composer
to use it. This is useful if you are developing private packages that you want to share within your projects only.

Packages installed by Composer are stored in the `vendor` directory of your project.

Check notice on line 14 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L14

[Microsoft.Passive] 'are stored' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are stored' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 14, "column": 32}}}, "severity": "INFO"}
Because Composer is a dependency manager, when it installs a package, it will also install all its dependent packages.

> Warning: `vendor` directory of your application should never be modified.

Check notice on line 17 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L17

[Microsoft.Passive] 'be modified' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be modified' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 17, "column": 64}}}, "severity": "INFO"}

A package could be installed with the following command:

Check notice on line 19 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L19

[Microsoft.Passive] 'be installed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be installed' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 19, "column": 17}}}, "severity": "INFO"}

```
composer install vendor-name/package-name
```

After it is done, Composer modifies `composer.json` and `composer.lock`. The former defines what packages to install,

Check failure on line 25 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L25

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 25, "column": 7}}}, "severity": "ERROR"}

Check notice on line 25 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L25

[Microsoft.Passive] 'is done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is done' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 25, "column": 10}}}, "severity": "INFO"}
and their version constraints the later stores a snapshot of exact versions actually installed.

Classes from the package will be available immediately via [autoloading](../concept/autoloading.md).
Expand All @@ -35,8 +35,8 @@

Below are the basic steps you may follow.

1. Create a project for your package and host it on a VCS repository, such as [github.com](https://github.com).

Check notice on line 38 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L38

[Microsoft.Acronyms] 'VCS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'VCS' has no definition.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 38, "column": 55}}}, "severity": "INFO"}
The development and maintenance work for the package should be done on this repository.

Check notice on line 39 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L39

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 39, "column": 64}}}, "severity": "INFO"}
2. Under the root directory of the project, create a file named `composer.json` as required by Composer. Please
refer to the next subsection for more details.
3. Register your package with a Composer repository, such as [Packagist](https://packagist.org/), so that
Expand Down Expand Up @@ -107,27 +107,27 @@
```


#### Package Name <span id="package-name"></span>

Check notice on line 110 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L110

[Microsoft.Headings] 'Package Name' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Package Name' should use sentence-style capitalization.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 110, "column": 6}}}, "severity": "INFO"}

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/queue`,
the vendor name and the project name are `yiisoft` and `queue`, respectively.

> Warning: Do NOT use `yiisoft` as your vendor name as it is reserved for use by the Yii itself.

Check failure on line 116 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L116

[Microsoft.Contractions] Use 'don't' instead of 'Do NOT'.
Raw output
{"message": "[Microsoft.Contractions] Use 'don't' instead of 'Do NOT'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 116, "column": 12}}}, "severity": "ERROR"}

Check notice on line 116 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L116

[Microsoft.Acronyms] 'NOT' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'NOT' has no definition.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 116, "column": 15}}}, "severity": "INFO"}

Check failure on line 116 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L116

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 116, "column": 56}}}, "severity": "ERROR"}

Check notice on line 116 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L116

[Microsoft.Passive] 'is reserved' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is reserved' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 116, "column": 59}}}, "severity": "INFO"}

We recommend you prefix `yii-` to the project name for packages that are not able to work as general PHP

Check warning on line 118 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L118

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 118, "column": 1}}}, "severity": "WARNING"}

Check failure on line 118 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L118

[Microsoft.Contractions] Use 'aren't' instead of 'are not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'aren't' instead of 'are not'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 118, "column": 70}}}, "severity": "ERROR"}
packages and require Yii application. This will allow users to more easily tell whether a package is Yii specific.

Check notice on line 119 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L119

[Microsoft.Vocab] Verify your use of 'allow' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'allow' with the A-Z word list.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 119, "column": 49}}}, "severity": "INFO"}

Check warning on line 119 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L119

[Microsoft.Adverbs] Remove 'easily' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'easily' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 119, "column": 69}}}, "severity": "WARNING"}


#### Dependencies <span id="dependencies"></span>

If your extension depends on other packages, you should list them in `require` section of `composer.json`.
Make sure you also list appropriate version constraints (e.g. `^1.0`, `@stable`) for each dependent package.

Check failure on line 125 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L125

[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 125, "column": 58}}}, "severity": "ERROR"}
Use stable dependencies when your extension released in a stable version.

#### Class Autoloading <span id="class-autoloading"></span>

Check notice on line 128 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L128

[Microsoft.Headings] 'Class Autoloading' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Class Autoloading' should use sentence-style capitalization.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 128, "column": 6}}}, "severity": "INFO"}

In order for your classes to be autoloaded, you should specify the `autoload` entry in the `composer.json` file,

Check notice on line 130 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L130

[Microsoft.Passive] 'be autoloaded' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be autoloaded' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 130, "column": 30}}}, "severity": "INFO"}
like shown below:

```json
Expand All @@ -144,10 +144,10 @@

You may list one or multiple root namespaces and their corresponding file paths.

### Recommended Practices <span id="recommended-practices"></span>

Check notice on line 147 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L147

[Microsoft.Headings] 'Recommended Practices' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Recommended Practices' should use sentence-style capitalization.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 147, "column": 5}}}, "severity": "INFO"}

Because packages are meant to be used by other people, you often need to make an extra effort during development.

Check notice on line 149 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L149

[Microsoft.Passive] 'are meant' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are meant' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 149, "column": 18}}}, "severity": "INFO"}

Check notice on line 149 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L149

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 149, "column": 31}}}, "severity": "INFO"}
Below we introduce some common and recommended practices in creating high quality extensions.

Check warning on line 150 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L150

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 150, "column": 7}}}, "severity": "WARNING"}


#### Testing <span id="testing"></span>
Expand All @@ -155,36 +155,36 @@
You want your package to run flawlessly without bringing problems to other people. To reach this goal, you should
test your extension before releasing it to public.

It is recommended that you create various test cases to cover your extension code rather than relying on manual tests.

Check failure on line 158 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L158

[Microsoft.Contractions] Use 'it's' instead of 'It is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'It is'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 158, "column": 1}}}, "severity": "ERROR"}

Check notice on line 158 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L158

[Microsoft.Passive] 'is recommended' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is recommended' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 158, "column": 4}}}, "severity": "INFO"}
Each time before you release a new version of your package, you may run these test cases to make sure
everything is in good shape. For more details, please refer to the [Testing](../testing/overview.md) section.


#### Versioning <span id="versioning"></span>

You should give each release of your extension a version number (e.g. `1.0.1`). We recommend you follow the

Check failure on line 165 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L165

[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 165, "column": 66}}}, "severity": "ERROR"}

Check warning on line 165 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L165

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 165, "column": 81}}}, "severity": "WARNING"}
[semantic versioning](http://semver.org) practice when determining what version numbers should be used.
[semantic versioning](https://semver.org) practice when determining what version numbers should be used.

Check notice on line 166 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L166

[Microsoft.Passive] 'be used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be used' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 166, "column": 97}}}, "severity": "INFO"}


#### Releasing <span id="releasing"></span>

To let other people know about your package, you need to release it to the public.

If it is the first time you are releasing a package, you should register it on a Composer repository, such as

Check failure on line 173 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L173

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 173, "column": 4}}}, "severity": "ERROR"}
[Packagist](https://packagist.org/). After that, all you need to do is simply create a release tag (e.g. `v1.0.1`)

Check notice on line 174 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L174

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 174, "column": 38}}}, "severity": "INFO"}

Check failure on line 174 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L174

[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 174, "column": 101}}}, "severity": "ERROR"}
on the VCS repository of your extension and notify the Composer repository about the new release. People will

Check notice on line 175 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L175

[Microsoft.Acronyms] 'VCS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'VCS' has no definition.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 175, "column": 8}}}, "severity": "INFO"}
then be able to find the new release, and install or update the package through the Composer repository.

In the releases of your package, in addition to code files, you should also consider including the following to

Check notice on line 178 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L178

[Microsoft.Wordiness] Consider using 'also' instead of 'in addition'.
Raw output
{"message": "[Microsoft.Wordiness] Consider using 'also' instead of 'in addition'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 178, "column": 34}}}, "severity": "INFO"}
help other people learn about and use your extension:

* A readme file in the package root directory: it describes what your extension does and how to install and use it.
We recommend you write it in [Markdown](http://daringfireball.net/projects/markdown/) format and name the file
We recommend you write it in [Markdown](https://daringfireball.net/projects/markdown/) format and name the file

Check warning on line 182 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L182

[Microsoft.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 182, "column": 3}}}, "severity": "WARNING"}
as `README.md`.
* A changelog file in the package root directory: it lists what changes are made in each release. The file

Check notice on line 184 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L184

[Microsoft.Passive] 'are made' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are made' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 184, "column": 73}}}, "severity": "INFO"}
may be written in Markdown format and named as `CHANGELOG.md`.

Check notice on line 185 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L185

[Microsoft.Passive] 'be written' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be written' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 185, "column": 7}}}, "severity": "INFO"}
* An upgrade file in the package root directory: it gives the instructions on how to upgrade from older releases
of the extension. The file may be written in Markdown format and named as `UPGRADE.md`.

Check notice on line 187 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L187

[Microsoft.Passive] 'be written' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be written' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 187, "column": 34}}}, "severity": "INFO"}
* Tutorials, demos, screenshots, etc.: these are needed if your extension provides many features that cannot be

Check notice on line 188 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L188

[Microsoft.Passive] 'are needed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are needed' looks like passive voice.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 188, "column": 46}}}, "severity": "INFO"}

Check failure on line 188 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L188

[Microsoft.Contractions] Use 'can't' instead of 'cannot'.
Raw output
{"message": "[Microsoft.Contractions] Use 'can't' instead of 'cannot'.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 188, "column": 103}}}, "severity": "ERROR"}
fully covered in the readme file.
* API documentation: your code should be well documented to allow other people to more easily read and understand it.

Check notice on line 190 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L190

[Microsoft.Vocab] Verify your use of 'allow' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'allow' with the A-Z word list.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 190, "column": 61}}}, "severity": "INFO"}

Check warning on line 190 in guide/es/structure/package.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/structure/package.md#L190

[Microsoft.Adverbs] Remove 'easily' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'easily' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/structure/package.md", "range": {"start": {"line": 190, "column": 88}}}, "severity": "WARNING"}
2 changes: 1 addition & 1 deletion guide/es/tutorial/performance-tuning.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Performance Tuning

Check notice on line 1 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L1

[Microsoft.Headings] 'Performance Tuning' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Performance Tuning' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

There are many factors affecting the performance of your application. Some are environmental, some are related

Check notice on line 3 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L3

[Microsoft.Passive] 'are related' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are related' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 3, "column": 100}}}, "severity": "INFO"}
with your code, while some others are related with Yii itself. In this section, we will enumerate most of these

Check notice on line 4 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L4

[Microsoft.Passive] 'are related' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are related' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 4, "column": 35}}}, "severity": "INFO"}

Check warning on line 4 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L4

[Microsoft.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Microsoft.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 4, "column": 81}}}, "severity": "WARNING"}
factors and explain how you can improve your application performance by adjusting these factors.


## Optimizing your PHP Environment <span id="optimizing-php"></span>

Check notice on line 8 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L8

[Microsoft.Headings] 'Optimizing your PHP Environment' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Optimizing your PHP Environment' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 8, "column": 4}}}, "severity": "INFO"}

Check warning on line 8 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L8

[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.
Raw output
{"message": "[Microsoft.HeadingAcronyms] Avoid using acronyms in a title or heading.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 8, "column": 20}}}, "severity": "WARNING"}

A well configured PHP environment is important. To get maximum performance,

Expand All @@ -13,26 +13,26 @@
- Enable bytecode caching with [Opcache](https://secure.php.net/opcache).
Bytecode caching avoids the time spent in parsing and including PHP scripts for every incoming request.
- [Tune `realpath()` cache](https://github.com/samdark/realpath_cache_tuner).
- Make sure [XDebug](https://xdebug.org/) is not installed in production environment.

Check failure on line 16 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L16

[Microsoft.Contractions] Use 'isn't' instead of 'is not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 16, "column": 43}}}, "severity": "ERROR"}
- Try [PHP 7 preloading](https://wiki.php.net/rfc/preload).

## Using Caching Techniques <span id="using-caching"></span>

Check notice on line 19 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L19

[Microsoft.Headings] 'Using Caching Techniques' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Using Caching Techniques' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 19, "column": 4}}}, "severity": "INFO"}

You can use various caching techniques to significantly improve the performance of your application. For example,

Check notice on line 21 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L21

[Microsoft.SentenceLength] Try to keep sentences short (< 30 words).
Raw output
{"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 21, "column": 102}}}, "severity": "INFO"}
if your application allows users to enter text in Markdown format, you may consider caching the parsed Markdown

Check notice on line 22 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L22

[Microsoft.Vocab] Verify your use of 'allows' with the A-Z word list.
Raw output
{"message": "[Microsoft.Vocab] Verify your use of 'allows' with the A-Z word list.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 22, "column": 21}}}, "severity": "INFO"}
content to avoid parsing the same Markdown text repeatedly in every request. Please refer to

Check warning on line 23 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L23

[Microsoft.Adverbs] Remove 'repeatedly' if it's not important to the meaning of the statement.
Raw output
{"message": "[Microsoft.Adverbs] Remove 'repeatedly' if it's not important to the meaning of the statement.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 23, "column": 49}}}, "severity": "WARNING"}
the [Caching](caching/overview.md) section to learn about the caching support provided by Yii.


## Optimizing Session Storage <span id="optimizing-session"></span>

Check notice on line 27 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L27

[Microsoft.Headings] 'Optimizing Session Storage' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Optimizing Session Storage' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 27, "column": 4}}}, "severity": "INFO"}

By default, session data are stored in files. The implementation is locking a file from opening a session to the point it's

Check notice on line 29 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L29

[Microsoft.Passive] 'are stored' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are stored' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 29, "column": 26}}}, "severity": "INFO"}
closed either by `$session->close()` or at the end of request.
While session file is locked all other requests, which are trying to use the same session are blocked i.e. waiting for the

Check notice on line 31 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L31

[Microsoft.Passive] 'is locked' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is locked' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 31, "column": 20}}}, "severity": "INFO"}

Check notice on line 31 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L31

[Microsoft.Passive] 'are blocked' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'are blocked' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 31, "column": 91}}}, "severity": "INFO"}

Check failure on line 31 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L31

[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'that is' instead of 'i.e.'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 31, "column": 103}}}, "severity": "ERROR"}
initial request to release session file. This is fine for development and probably small projects. But when it comes
to handling massive concurrent requests, it is better to use more sophisticated storage, such as Redis.

Check failure on line 33 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L33

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 33, "column": 42}}}, "severity": "ERROR"}

It could be done either by [configuring PHP via php.ini](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-redis-server-as-a-session-handler-for-php-on-ubuntu-14-04)

Check notice on line 35 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L35

[Microsoft.Passive] 'be done' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be done' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 35, "column": 10}}}, "severity": "INFO"}
or [implementing SessionHandlerInterface](https://www.sitepoint.com/saving-php-sessions-in-redis/) and configuring
session service as follows:

Expand All @@ -43,26 +43,26 @@
],
```

## Optimizing Databases <span id="optimizing-databases"></span>

Check notice on line 46 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L46

[Microsoft.Headings] 'Optimizing Databases' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Optimizing Databases' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 46, "column": 4}}}, "severity": "INFO"}

Executing DB queries and fetching data from databases are often the main performance bottleneck in
a Web application. Although using [data caching](caching/data.md) techniques may alleviate the performance hit,
it does not fully solve the problem. When the database contains enormous amounts of data and the cached data is invalid,

Check failure on line 50 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L50

[Microsoft.Contractions] Use 'doesn't' instead of 'does not'.
Raw output
{"message": "[Microsoft.Contractions] Use 'doesn't' instead of 'does not'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 50, "column": 4}}}, "severity": "ERROR"}
fetching the latest data could be prohibitively expensive without proper database and query design.

A general technique to improve the performance of DB queries is to create indices for table columns that
need to be filtered by. For example, if you need to look for a user record by `username`, you should create an index

Check notice on line 54 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L54

[Microsoft.Passive] 'be filtered' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be filtered' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 54, "column": 9}}}, "severity": "INFO"}
on `username`. Note that while indexing can make SELECT queries much faster, it will slow down INSERT, UPDATE and DELETE queries.

For complex DB queries, it is recommended that you create database views to save the query parsing and preparation time.

Check failure on line 57 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L57

[Microsoft.Contractions] Use 'it's' instead of 'it is'.
Raw output
{"message": "[Microsoft.Contractions] Use 'it's' instead of 'it is'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 57, "column": 25}}}, "severity": "ERROR"}

Check notice on line 57 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L57

[Microsoft.Passive] 'is recommended' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is recommended' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 57, "column": 28}}}, "severity": "INFO"}

Last but not least, use `LIMIT` in your `SELECT` queries. This avoids fetching an overwhelming amount of data from the database
and exhausting the memory allocated to PHP.


## Optimizing Composer Autoloader <span id="optimizing-autoloader"></span>

Check notice on line 63 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L63

[Microsoft.Headings] 'Optimizing Composer Autoloader' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Optimizing Composer Autoloader' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 63, "column": 4}}}, "severity": "INFO"}

Because Composer autoloader is used to include most third-party class files, you should consider optimizing it

Check notice on line 65 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L65

[Microsoft.Passive] 'is used' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is used' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 65, "column": 29}}}, "severity": "INFO"}
by executing the following command:

```
Expand All @@ -75,7 +75,7 @@
Note that both optimizations may or may not be suitable for your particular case.


## Processing Data Offline <span id="processing-data-offline"></span>

Check notice on line 78 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L78

[Microsoft.Headings] 'Processing Data Offline' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Processing Data Offline' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 78, "column": 4}}}, "severity": "INFO"}

When a request involves some resource intensive operations, you should think of ways to perform those operations
in offline mode without having users wait for them to finish.
Expand All @@ -85,14 +85,14 @@
In the pull method, whenever a request involves some complex operation, you create a task and save it in a persistent
storage, such as database. You then use a separate process (such as a cron job) to pull the tasks and process them.
This method is easy to implement, but it has some drawbacks. For example, the task process needs to periodically pull
from the task storage. If the pull frequency is too low, the tasks may be processed with great delay, but if the frequency

Check notice on line 88 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L88

[Microsoft.Passive] 'be processed' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'be processed' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 88, "column": 72}}}, "severity": "INFO"}
is too high, it will introduce high overhead.

In the push method, you would use a message queue (e.g. RabbitMQ, ActiveMQ, Amazon SQS, etc.) to manage the tasks.

Check failure on line 91 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L91

[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Microsoft.Foreign] Use 'for example' instead of 'e.g.'.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 91, "column": 52}}}, "severity": "ERROR"}

Check notice on line 91 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L91

[Microsoft.Acronyms] 'SQS' has no definition.
Raw output
{"message": "[Microsoft.Acronyms] 'SQS' has no definition.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 91, "column": 84}}}, "severity": "INFO"}
Whenever a new task is put on the queue, it will initiate or notify the task handling process to trigger the task processing.

Check notice on line 92 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L92

[Microsoft.Passive] 'is put' looks like passive voice.
Raw output
{"message": "[Microsoft.Passive] 'is put' looks like passive voice.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 92, "column": 21}}}, "severity": "INFO"}


## Performance Profiling <span id="performance-profiling"></span>

Check notice on line 95 in guide/es/tutorial/performance-tuning.md

View workflow job for this annotation

GitHub Actions / vale

[vale] guide/es/tutorial/performance-tuning.md#L95

[Microsoft.Headings] 'Performance Profiling' should use sentence-style capitalization.
Raw output
{"message": "[Microsoft.Headings] 'Performance Profiling' should use sentence-style capitalization.", "location": {"path": "guide/es/tutorial/performance-tuning.md", "range": {"start": {"line": 95, "column": 4}}}, "severity": "INFO"}

You should profile your code to find out the performance bottlenecks and take appropriate measures accordingly.
The following profiling tools may be useful:
Expand All @@ -100,4 +100,4 @@
- [Yii debug toolbar and debugger](https://github.com/yiisoft/yii2-debug/blob/master/docs/guide/README.md)
- [Blackfire](https://blackfire.io/)
- [XHProf](https://secure.php.net/manual/en/book.xhprof.php)
- [XDebug profiler](http://xdebug.org/docs/profiler)
- [XDebug profiler](https://xdebug.org/docs/profiler)
2 changes: 1 addition & 1 deletion guide/id/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Panduan Definitif untuk Yii 3.0

Panduan ini dirilis di bawah [Ketentuan Dokumentasi Yii](http://www.yiiframework.com/doc/terms/).
Panduan ini dirilis di bawah [Ketentuan Dokumentasi Yii](https://www.yiiframework.com/doc/terms/).

Pengenalan +
------------
Expand Down
Loading