Ich erstelle ein Paket und möchte Hook-Funktionalität (das Paket sollte zusätzliche Validierungsregeln einfügen, wenn ein Benutzer ein Feld in meiner App aktualisiert).Haken in Laravel 5?
Ich habe dies mit dem Event-System zu tun. Was ich tue, ist die Übergabe der Variablen $ rules und $ request an den Listener, ich modifiziere die Variable $ rules und gebe sie zurück.
Wäre das eine schlechte Praxis? Was wäre die empfohlene Vorgehensweise?
Ich meine, es funktioniert. Ich bin mir nur nicht sicher, ob das der beste Weg ist.
-Code unten:
SettingsController.php (dies unter App ist/und wo ich auf Update bin Validierung)
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);
Da ist in meinem Paket (Pakete/exchange/src/Hörer) bekam ich diesen Hörer (ValidateSettings.php):
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;
}
}