Мне нужно пользовательское правило проверки для моего приложения.В качестве доказательства концепции я создал простое правило проверки.В целях тестирования метод pass возвращает false.Я добавил валидацию в мой контроллер, но даже если валидатор возвращает false, контроллер продолжает работать так, как будто проверка прошла успешно.Я использовал отладчик, чтобы подтвердить, что метод pass действительно используется и возвращает false.
Почему я делаю неправильно?
Вот мой класс правил:
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class UniqueAgent implements Rule
{
protected $id;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id): void
{
$this->id = $id;
}
/**
* UniqueAgent constructor.
*/
public function __construct($id)
{
$this->setId($id);
}
public function passes($attribute, $value)
{
// TODO: Implement passes() method.
return false;
}
public function message()
{
// TODO: Implement message() method.
}
}
Вот код контроллера:
public function update(Request $request, $id)
{
// UniqueAgent rule returns 'false'
$validateData = $request->validate([
'agency' => [
'required',
new UniqueAgent($id)
]
]);
$agent = Agent::findOrFail($id)
$agent->agency = $request->input('agency');
$agent->save();
}
Спасибо