Как проверить, является ли поле запроса пустым в laravel контроллере? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть форма ввода с именем 'min' И в моем контроллере я использовал проверочный номер c, пользователь должен ввести в него только число, и если пользователь оставил его пустым, значение 'минимального' установлено равным нулю и отправить в мою базу данных

вот мой контроллер:

 $rules = [
        'user_id' => '',
        'name' => 'required|max:255|min:2',
        'description' => 'required|min:10|max:1000',
        'price' => 'required|numeric',
        'min' => 'numeric',
    ];
    $errormessages = [
        'required' => ':attribute is required !',
        'max' => ':attribute max size exceded ',
        'min' => ':attribute is too short',
        'numeric' => ':attribute must be numeric',

    ];

    $this->validate($request, $rules, $errormessages);

$userproduct = new Userproduct();
    $userproduct->user_id = auth()->id();
    $userproduct->name = $request->name;
    $userproduct->description = $request->description;
    $userproduct->price = $request->price;
    if (!empty($request->input('min')))
    {
        $userproduct->min = $request->min;
    }
    else {
        $userproduct->min = 0;
    }
$userproduct->save();
    return redirect('/profile/products')->with('message', 'Added sucsessfuly');

Я пробовал слишком много способов, например: if ($ request-> has ('min') if ($ request-> fill ( 'min')

Но когда я отправляю форму, она выдает мне ошибку "Мин. должен быть цифрой c", кажется, что все еще отправляется ноль!

Пожалуйста, помогите мне решить эту проблему

Ответы [ 5 ]

1 голос
/ 21 февраля 2020
 $validator = Validator::make($request->all(), [
            'user_id' => '',
            'name' => 'required|max:255|min:2',
            'description' => 'required|min:10|max:1000',
            'price' => 'required|numeric',
            'min' => 'nullable|numeric',
        ],[
        'required' => ':attribute is required !',
        'max' => ':attribute max size exceded ',
        'min' => ':attribute is too short',
        'numeric' => ':attribute must be numeric',

    ]);

if (!$validator->fails()) {

   $userproduct->min = isset($request->min)?$request->min:0;
}
1 голос
/ 21 февраля 2020

Эй, вам нужно добавить nullable в ваши правила валидации c значение

Теперь он должен принимать числовые значения c и пустое поле

1 голос
/ 21 февраля 2020

Произошла ошибка numeric При проверке необходимо обновить код контроллера:

Добавить nullable с помощью numeric

$rules = [
   'user_id' => '',
    'name' => 'required|max:255|min:2',
    'description' => 'required|min:10|max:1000',
    'price' => 'required|numeric',
    'min' => 'numeric|nullable',
 ];
 $errormessages = [
    'required' => ':attribute is required !',
    'max' => ':attribute max size exceded ',
    'min' => ':attribute is too short',
    'numeric' => ':attribute must be numeric',
];

$this->validate($request, $rules, $errormessages);

$userproduct = new Userproduct();
$userproduct->user_id = auth()->id();
$userproduct->name = $request->name;
$userproduct->description = $request->description;
$userproduct->price = $request->price;

//Here you already wrote logic for set 0 value.
if (!empty($request->input('min'))){
    $userproduct->min = $request->min;
} else {
    $userproduct->min = 0;
}
$userproduct->save();
return redirect('/profile/products')->with('message', 'Added sucsessfuly');
0 голосов
/ 21 февраля 2020

Использование:

$rules = [
    'min' => 'nullable|numeric',
];

установить ноль (0), если пусто, просто сказать:

$min = $request->input('min', 0) ; // in this case 0 is the default value

0 голосов
/ 21 февраля 2020

В laravel - >get() метод работает

попробуйте этот

$request->get('min')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...