Skip to content

Commit a0ec345

Browse files
Update of custom validator documentation in Spanish (#1052)
Update of custom validator documentation in Spanish from the issue #1041. --------- Co-authored-by: TheHandyOwl <[email protected]>
1 parent b99757f commit a0ec345

File tree

3 files changed

+51
-49
lines changed

3 files changed

+51
-49
lines changed

docs/basics/errors.es.md

-45
Original file line numberDiff line numberDiff line change
@@ -136,51 +136,6 @@ struct MyError: DebuggableError {
136136

137137
`DebuggableError` tiene otras propiedades como `possibleCauses` y `suggestedFixes` que puedes usar para mejorar la depuración de tus errores. Echa un vistazo al protocolo para más información.
138138

139-
## Stack Traces (Trazas de Pila)
140-
141-
Vapor incluye soporte para visualizar stack traces para errores normales y crashes de Swift.
142-
143-
### Swift Backtrace
144-
145-
Vapor usa la librería de [SwiftBacktrace](https://github.com/swift-server/swift-backtrace) para proporcionar stack traces después de un error crítico (fatal error) o comprobaciones (assertion) en Linux. Para que esto funcione, tu app debe incluir símbolos de depuración (debug symbols) durante la compilación.
146-
147-
```sh
148-
swift build -c release -Xswiftc -g
149-
```
150-
151-
### Trazas de Error
152-
153-
Por defecto, `Abort` capturará el stack trace actual al inicializarse. Tus tipos de errores personalizados pueden conseguir esto conformándose con `DebuggableError` y guardando `StackTrace.capture()`.
154-
155-
```swift
156-
import Vapor
157-
158-
struct MyError: DebuggableError {
159-
var identifier: String
160-
var reason: String
161-
var stackTrace: StackTrace?
162-
163-
init(
164-
identifier: String,
165-
reason: String,
166-
stackTrace: StackTrace? = .capture()
167-
) {
168-
self.identifier = identifier
169-
self.reason = reason
170-
self.stackTrace = stackTrace
171-
}
172-
}
173-
```
174-
175-
Cuando el [nivel de registro](logging.es.md#nivel) de tu app se establece a `.debug` o inferior, stack traces de errores se incluirán en los registros.
176-
177-
Los stack traces no serán capturados cuando el nivel de registro sea mayor que `.debug`. Para sobrescribir este comportamiento, establece `StackTrace.isCaptureEnabled` manualmente en `configure`.
178-
179-
```swift
180-
// Siempre captura stack traces, sin importar el nivel de registro.
181-
StackTrace.isCaptureEnabled = true
182-
```
183-
184139
## Middleware de Error
185140

186141
`ErrorMiddleware` es el único middleware añadido a tu aplicación por defecto. Este middleware transforma errores de Swift que hayan sido lanzados o devueltos por tus controladores de rutas en respuestas HTTP. Sin este middleware, los errores lanzados darían lugar al cierre de la conexión sin una respuesta.

docs/basics/validation.es.md

+49-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Validación
22

3-
La API Validation de Vapor te ayuda a validar peticiones entrantes antes de usar la API [Content](content.md) para decodificar datos.
3+
La API Validation de Vapor te ayuda a validar el cuerpo y los parámetros de consulta de una solicitud entrante antes de usar la API [Content](content.md) para decodificar datos.
44

55
## Introducción
66

@@ -220,7 +220,7 @@ Debajo tienes una lista de los validadores soportados actualmente y una breve ex
220220
|`.range(_:)`|El valor se encuentra en el `Range` (rango) proporcionado.|
221221
|`.url`|Contiene una URL válida.|
222222

223-
Los validadores también pueden combinarse mediante operadores para construir validaciones complejas.
223+
Los validadores también pueden combinarse mediante operadores para construir validaciones complejas. Más información sobre el validador `.custom` en [[#Validadores Personalizados]].
224224

225225
|Operador|Posición|Descripción|
226226
|-|-|-|
@@ -230,7 +230,11 @@ Los validadores también pueden combinarse mediante operadores para construir va
230230

231231
## Validadores Personalizados
232232

233-
Crear un validador personalizado para códigos postales te permite extender la funcionalidad del marco de validación. En esta sección, te guiaremos a través de los pasos para crear un validador personalizado que valide códigos postales.
233+
Hay dos formas de crear validadores personalizados.
234+
235+
### Extendiendo la API Validation
236+
237+
Extendiendo la API Validation es la mejor opción para los casos en los que planees utilizar el validador personalizado en más de un objeto `Content`. En esta sección, te guiaremos por los pasos para crear un validador personalizado para validar códigos postales.
234238

235239
Primero, crea un nuevo tipo para representar los resultados de la validación de `ZipCode`. Esta estructura será responsable de informar si una cadena dada es un código postal válido.
236240

@@ -287,3 +291,45 @@ Ahora que has definido el validador personalizado `zipCode`, puedes usarlo para
287291
```swift
288292
validations.add("zipCode", as: String.self, is: .zipCode)
289293
```
294+
295+
### Validador `Custom`
296+
297+
El validador `Custom` es el más adecuado para los casos en los que deseas validar una propiedad en un solo objeto `Content`. Esta implementación tiene las siguientes dos ventajas en comparación con la extensión de la API Validation:
298+
299+
- Lógica de validación personalizada más sencilla de implementar.
300+
- Sintaxis más corta.
301+
302+
En esta sección, te guiaremos a través de los pasos para crear un validador personalizado para verificar si un empleado es parte de nuestra empresa mirando la propiedad `nameAndSurname`.
303+
304+
```swift
305+
let allCompanyEmployees: [String] = [
306+
"Everett Erickson",
307+
"Sabrina Manning",
308+
"Seth Gates",
309+
"Melina Hobbs",
310+
"Brendan Wade",
311+
"Evie Richardson",
312+
]
313+
314+
struct Employee: Content {
315+
var nameAndSurname: String
316+
var email: String
317+
var age: Int
318+
var role: String
319+
320+
static func validations(_ validations: inout Validations) {
321+
validations.add(
322+
"nameAndSurname",
323+
as: String.self,
324+
is: .custom("Validates whether employee is part of XYZ company by looking at name and surname.") { nameAndSurname in
325+
for employee in allCompanyEmployees {
326+
if employee == nameAndSurname {
327+
return true
328+
}
329+
}
330+
return false
331+
}
332+
)
333+
}
334+
}
335+
```

docs/basics/validation.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -294,14 +294,15 @@ Now that you've defined the custom `zipCode` validator, you can use it to valida
294294
```swift
295295
validations.add("zipCode", as: String.self, is: .zipCode)
296296
```
297+
297298
### `Custom` Validator
298299

299300
The `Custom` validator is best suited for cases where you want to validate a property in only one `Content` object. This implementation has the following two advantages compared to extending the Validation API:
300301

301302
- Simpler to implement custom validation logic.
302303
- Shorter syntax.
303304

304-
In this section, we'll walk you through the steps to create a custom validator for checking whether an employee is part of our company by looking at the `nameAndSurname` property.
305+
In this section, we'll walk you through the steps to create a custom validator for checking whether an employee is part of our company by looking at the `nameAndSurname` property.
305306

306307
```swift
307308
let allCompanyEmployees: [String] = [

0 commit comments

Comments
 (0)