Paket oluşturuyorum ve kanca işlevini kullanmak istiyorum (bir kullanıcı uygulamasındaki bir alanı güncelleştirdiğinde paket bazı ek doğrulama kuralları eklemelidir).Kancalar?
Olay sistemini kullanarak bunu yapmayı başardım. Yaptığım şey $ kural değişkenini ve $ isteğini dinleyiciye iletmektir, $ rules değişkenini değiştirip iade ediyorum.
Bu kötü bir uygulama mıdır? Bunu yapmanın önerilen yolu ne olurdu?
Yani, işe yarıyor. Sadece bunun için en iyi yol olup olmadığından emin değilim.
aşağıda Kodu:
SettingsController.php (Bu Uygulama altındadır/ve nerede güncelleme üzerinde doğrulama ediyorum) paketim (paketler/değişimi/src/İşleyicilere içinde Sonra
public function update(Setting $setting, Request $request)
{
$rules = [
'package' => 'required|in:'.implode(config('app.packages'),','),
'name' => 'required|max:255|alpha_dash|not_contains:-|unique:auth_setting,name,'.$setting->id.',id,package,'.$setting->package,
'description' => '',
];
// Is this bad??
$rules = Event::fire(new SettingsWereSubmitted($request,$rules))[0];
$v = Validator::make($request->all(),$rules);
) Bu dinleyici (ValidateSettings.php) var: Ben senin bu kod parçasının bakıyorum
public function handle(SettingsWereSubmitted $event)
{
if($event->request->package == 'exchange')
{
// Add rules
$rules = [
'fee' => 'required|decimal|min_amount:0|max_amount:1|max_decimal:8',
'freeze_trade' => 'required|in:1,0',
];
$event->rules['value'] = $rules[$event->request->name];
return $event->rules;
}
}