Я новичок в Laravel 5.
Как удалить пробелы в валидаторе? Я прочитал документацию, но нет валидатора для обрезки (удалить пробелы).
здесь мои правила
$rules = [ 'name' =>'required', 'email' => 'required|email', 'address' => 'required', 'phones' => 'required' ];
спасибо за Ваш ответ.
Для валидатора не требуется изменять любые входные данные. В CodeIgniter существует валидатор Trim, но для меня это неправильное место для выполнения обрезки.
Вы можете автоматически обрезать все входные данные, используя это:
Input::merge(array_map('trim', Input::all()));
Теперь сделайте остальную часть своей кодировки:
$username = Input::get('username'); // it's trimed // ... Validator::make(...);
Вы можете использовать следующий код, чтобы обрезать весь ввод строки (поскольку у вас могут быть массивы на входе)
// trim all input Input::merge(array_map(function ($value) { if (is_string($value)) { return trim($value); } else { return $value; } }, Input::all()));
В Laravel 5.2 или 5.3 вы можете использовать обрезку для пробелов, как это делается
$input = array_map('trim', $request->all());
так что это приведет к удалению всех входов пространственной формы, которые были отправлены, и проверка будет работать нормально
public function formatInput() { $input = array_map('trim', $this->all()); $this->replace($input); return $this->all(); }
Я расширил класс FormRequest
и prepareForValidation
метод prepareForValidation
который вызывается до проверки.
// anything I don't want trimmed here protected $untrimmable = []; // replace the request with trimmed request here protected function prepareForValidation() { return $this->replace($this->trimData($this->all())); } // recursively trim the fields in the request here protected function trimData($data,$keyPrefix = '') { $trimmedFields = array_map(function($value,$field) use ($keyPrefix){ // if the value is an array handle it as // a request array and send along the prefix if(is_array($value)){ return $this->trimData($value,$this->dotIndex($keyPrefix,$field)); } // if the field is not in the specified fields to be // left untrimmed if( !in_array($this->dotIndex($keyPrefix,$field),$this->dontTrim) && !in_array($this->dotIndex($keyPrefix,$field), $this->untrimmable) ) { return trim((string) $value); } return $value; }, $data,array_keys($data)); return array_combine(array_keys($data),$trimmedFields); }
Что оно делает:
untrimmable
свойстве. Вот ссылка на gist https://gist.github.com/msbrime/336a788c7cced2137bdc7896c1241239