Crear un request

Un request en interesante hacerlo por ejemplo cuando una validación está sujeta a condiciones dependiendo de algún campo.

php artisan make:request StorePostRequest
En app\Http\Requests\StorePostRequest.php poner la función authorize:
if ($this->user_id == auth()->user()->id) {
return true;
}
else {
return false;
}
En la función rules:
$rules = [
'name' => 'required',
'slug' => 'required|unique:posts',
'status' => 'required|in:1,2'
];

if ($this->status == 2) { // añadir nuevas reglas a las q ya hay en ese array
$rules = array_merge($rules, [
'category_id' => 'required',
'tags' => 'required
'extract' => 'required',
'body' => 'required'
]);
}

return $rules;

En el PostController:
use App\Http\Requests\StorePostRequest; Cambiar la función store a:
public function store(StorePostRequest $request) { // al ser ya de tipo StorePostRequest ya hace antes la validación
$post = Post::create($request->all());

if ($request->tags) {
$post->tags()->attach($request->tags);
}

return redirect()->route('admin.posts.edit', $post
}

No hay comentarios:

Publicar un comentario