使用观察者请求验证

时间:2019-09-25 11:50:23

标签: laravel laravel-5

借助观察者,我将其他内容添加到模型/数据库中。 这没有问题!

现在,我想验证传入的请求,但是不幸的是,我不知道如何在观察者中插入验证或规则。

class Customer
{
    /**
     * @var array
     */
    protected $rules = [
        'firstname' => 'numeric',
        'name1' => 'string',
        //'client_number' => 'required|string|unique:customers',
    ];

    /**
     * Listen to the updated event.
     *
     * @param Model $customer
     * @return void
     */
    public function saving(Model $customer)
    {    
        if (request('firstname'))
        {
            if (request('firstname') != null)
            {
                $customer->firstname = request('firstname');
            }
            else
            {
                $customer->firstname = NULL;
            }            
        }

        $customer->client_number = '123456789';
    }
}

1 个答案:

答案 0 :(得分:0)

首先,我认为您应该避免使用Model Observer进行请求验证。 laravel为此提供了其他功能,例如Form request validation

另一方面,您可以manually create a validator在观察者(或代码的任何其他部分)中运行。这是一个遵循您问题代码的示例:

class Customer
{
    /**
     * @var array
     */
    protected $rules = [
        'firstname' => 'numeric',
        'name1' => 'string',
        //'client_number' => 'required|string|unique:customers',
    ];

    /**
     * Listen to the updated event.
     *
     * @param Model $customer
     * @return void
     */
    public function saving(Model $customer)
    {    
        $validator = Validator::make(request()->all(), $this->rules);

        if ($validator->fails()) {
            // Fail logic
        } else {
            // Success logic
        }
    }
}