自定义验证规则未激活

时间:2020-07-30 04:47:22

标签: laravel

我有一个自定义验证规则,当我从Validator::make方法调用该规则时,该规则未激活。我的商店功能如下:

public function store(Request $request, $productor, $proveedor, $tipo, $formula)
    {
        $c1 = $request->input('1');
        $c2 = $request->input('2');
        $c3 = $request->input('3');
        $c4 = $request->input('4');

        $validator = Validator::make($request->all(), ['evaluacion' => new PasoEvaluacion($c1, $c2, $c3, $c4)]);

        if ($validator->fails()){
            return Redirect::action('CompletarEvaluacionController@index',[$productor, $proveedor, $tipo, $formula])->withErrors($validator);
        }
    }

c1, c2, c3, c4不是要存储在数据库中的值,而是它们的总和,它们将被称为evaluacion,因此evaluacion本身不是用户的输入。 / p>

我的规则如下

class PasoEvaluacion implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public $ponderacion_uno;
    public $ponderacion_dos;
    public $ponderacion_tres;
    public $exito;

    public function __construct($ponderacion_uno, $ponderacion_dos, $ponderacion_tres, $exito)
    {
        $this->ponderacion_uno = $ponderacion_uno;
        $this->ponderacion_dos = $ponderacion_dos;
        $this->ponderacion_tres = $ponderacion_tres;    
        $this->exito = $exito;
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        Log::info('here');
        if ($this->ponderacion_uno + $this->ponderacion_dos + $this->ponderacion_tres >= $this->exito){
            return true;
        }
        else return false;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'Criterio reprobado';
    }
}

这个问题是,似乎甚至没有达到new PasoEvaluacion规则,因为当我检查日志时它什么也没打印,有没有办法做到这一点?

0 个答案:

没有答案