Я пытаюсь реализовать валидацию с помощью Правил для валидации поля в модели;как указано в официальной документации, таким образом:
1) В папке App / Rules я помещаю файл Um.php:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use App\Models\Common\Item;
class Um implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if(strlen($attribute) < 5)
return false;
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The field is too short ';
}
}
2) В моем классе контроллера, в методе update:
use App\Rules\Um as RuleUm;
...
public function update(Request $request $item)
{
//$item is the model don't worry for this
//Here is where I invoke the rule
$request->validate([
'codum' => [ new RuleUm],
]);
$item->update($request->input());
//...son on
}
Пока все хорошо, проблема возникает, когда после обновления данных;метод pass () полностью игнорируется;и происходит, чтобы выполнить обновление.Это не зависит от логики метода, потому что он все равно возвращает false в любом случае, так же, как Laravel все еще игнорирует метод, он не выполняется.
Может кто-нибудь помочь мне?Что я делаю не так?