как определить, есть ли поле для ввода в laravel - PullRequest
0 голосов
/ 24 марта 2020

Я пытался создать проверку в laravel контроллере, где, если у одного из полей есть входные данные, тогда остальные поля будут проверены на 'required'. Но это подсказывает Error Class 'Illuminate\Support\Facades\Input' not found. Пожалуйста, помогите

         if(Input::has('quantity1') || has('unit1') || has('dimension1') || has('price1')){
            $data = $request->validate([
                    'quantity1' => 'required',
                    'unit1' => 'required',
                    'dimension1' => 'required',
                    'price1' => 'required',
                ]);

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Input устарело.

Я настоятельно рекомендую создать пользовательский класс запросов и использовать его.

Преимущества включают:

  1. Соответствует SOLID принципам.

  2. Простое место для управления вашими правилами и сообщениями.

  3. Простое место для обработки разрешений, если вы выберете.

  4. Может быть расширен и использован по мере необходимости.

-

Вот шаги, как это сделать:

  1. Выполнить php artisan make:request YourCustomRequestClassNamae

  2. Заполнить новый файл app\Http\Requests\YourCustomRequestClassNamae.php:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class YourCustomRequestClassNamae extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'quantity1'     => 'required',
            'unit1'         => 'required',
            'dimension1'    => 'required',
            'price1'        => 'required',
        ];
    }
}
В контроллере сделайте что-то вроде:

<?php

namespace App\Http\Controllers;

...

use App\Http\Requests\YourCustomRequestClassNamae;

...

class YourControllerName extends Controller
{

...

    public function yourMethodName(YourCustomRequestClassNamae $request)
    {
        $validatedData = $request->validated();

...

Если вышеприведенная проверка не пройдена, он вернется обратно с 422, и сообщения автоматически будут готовы к извлечению из пакета сообщений.

Источники:

Пример в дикой природе:

0 голосов
/ 24 марта 2020

Использовать required_with laravel правило проверки ...

$data = $request->validate([
                    'quantity1' => 'required_with:unit1,dimension1,price1',
                    'unit1' => 'required_with:quantity1,dimension1,price1',
                    'dimension1' => 'required_with:quantity1,unit1,price1',
                    'price1' => 'required_with:quantity1,unit1,dimension1',
                ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...