Hooks in Laravel 5?

Viewed 8212

I'm creating a package and want hook functionality (the package should inject some extra validation rules when a user updates a field in my app).

I managed to do this using the event system. What I do is pass the $rules variable and $request into the listener, I modify the $rules variable and return it.

Would this be bad practice? What would be the recommended way of doing it?

I mean, it works. I'm just unsure if this is the best way to go about it.

Code below:

SettingsController.php (this is under App/ and where I'm validating on update)

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);

Then in my package (packages/exchange/src/Listeners) I got this listener (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;
    }

}
1 Answers
Related