muhammad_97
@muhammad_97
PHP-разработчик

Сложная валидация в Laravel?

Есть модель Product с тремя методами add($data), edit($id, $data) и validate($data).

В самом начале методов add и edit происходит валидация:

public static function add($data)
{
	Product::validate($data);
	...
}

public static function add($id, $data)
{
	Product::validate($data);
	...
}


В методе validate есть следующее правило:

$rules = array(
	...
	'url'  => 'required|min:5|max:512|unique:products',
	...
);


Проблема в том, что если при редактировании оставить url прежним, валидатор выдает ошибку, что URL уже занят. Подскажите, пожалуйста, как можно решить эту проблему?
  • Вопрос задан
  • 680 просмотров
Решения вопроса 1
BbFlaMe
@BbFlaMe
Full stack web developer
$rules = array(
    'url' => 'required|unique:products,url,{{$id}}',
);

public function validate($data, $id = null)
    {
        $rules = $this->rules;
        foreach($rules as $keys => $value) {
            $validations = explode('|', $value);
            foreach($validations as $key => $value) {
                $validations[$key] = str_replace('{{$id}}', $id, $value);
            }
            $implode = implode("|", $validations);
            $rules[$keys] = $implode;
        }
        
        return \Validator::make($data, $rules);
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы