Я создаю REST API и хотел бы добавить некоторые правила проверки к конечным точкам CREATE и UPDATE.Правила валидации для этих двух конечных точек будут абсолютно одинаковыми, поэтому я хотел бы иметь возможность указывать их только в одном месте.Исходя из фона Laravel, я обычно создаю запросы формы или помещаю правила проверки в модель в функцию rules()
.
Однако я думаю, что Lumen выполняет проверку немного по-другому, и их документация предлагает поместить логику проверкив роутере: https://lumen.laravel.com/docs/master/validation
Однако лично я не думаю, что это лучшее место для него и предпочел бы вместо этого поставить модель.Я попытался использовать функцию rules()
в модели, но это, похоже, ничего не делает.
Мои create
и update
методы выглядят так:
public function create(Request $request)
{
$product = Product::create($request->all());
return response()->json($product, 201);
}
public function update($id, Request $request)
{
$product = Product::findOrFail($id);
$product->update($request->all());
return response()->json($product, 200);
}
Isвозможно ли поместить мои правила проверки в мою модель Product
и запустить их автоматически?
Вот как я пытался сделать это в своей модели:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'price', 'description',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [];
/**
* Set model validation rules.
*
* @return array
*/
public function validate()
{
return [
'name' => 'required',
'price' => 'required',
'description' => 'required',
];
}
}