En los métodos del controller las validaciones siempre se hacen:
$request->validate([
'name' => 'required',
'slug' => "required|unique:categories,slug,$category->id"
]);
Pero si hay que hacer validaciones más complejas lo ideal es crear un request:
php artisan make:request StorePostRequest
En app\Http\Requests\StorePostRequest.php:
authorize() a true
...
function rules() {
$rules = [
'name' => 'required',
'slug' => 'required|unique:posts',
'status' => 'required|in:1,2'
];
if ($this->status == 2) {
$rules = array_merge($rules, [
'category_id' => 'required',
'tags' => 'required',
'extract' => 'required',
'body' => 'required'
]);
}
return $rules;
}
Y luego en el Controller solo hay que:
use App\Http\Requests\StorePostRequest;
...
// solo poniendo esto ya hace automáticamente todas las vacidaciones a lo q se mande por $request
public function store(StorePostRequest $request) {
...
}