условие в laravel проверке - PullRequest
0 голосов
/ 27 марта 2020

Пожалуйста, помогите мне, я пытаюсь проверить каждую строку строки, которая была выделена красным цветом в форме, используя validate([]). Если пользователь заполнил один из столбцов в строке и попытается отправить его, оставив незаполненными другие поля, он предложит пользователю заполнить оставшиеся поля. Я придумал различные условия, но, к сожалению, ни одно из них не сработало,

enter image description here

это моя функция магазина

  public function store(Request $request){
        $currentStatus = 0;

        $data = $request->validate([
            'to' => 'required',
            'date' => 'date',
            'address' => 'required',
            'reference' => 'required',
            'attention' => 'required',
            'area' => 'required',
            'project' => 'required',
            'salesman' => 'required',
            'location' => 'required'


        ]);
        \App\Contract::create($data + ['status' => $currentStatus]);
        return redirect('contracts/pendings');

Ответы [ 2 ]

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

Я предполагаю, что имена в HTML выглядят так:

<form method="post" action="{{ route('test') }}">
    @csrf
    <input type="text" name="data[0][quantity]">
    <input type="text" name="data[0][unit]">
    <input type="text" name="data[1][quantity]">
    <input type="text" name="data[1][unit]">
    <input type="submit">
</form>

Вы можете попробовать что-то подобное в вашем контроллере.

$this->validate($request, [
    'data.*.quantity' => 'sometimes|required_with:data.*.unit',
    'data.*.unit' => 'sometimes|required_with:data.*.quantity',
]);

required_with params принимают несколько полей, разделенных запятыми, поэтому вам может потребоваться передать все поля в проверке. sometimes проверяет только когда ему переданы значения, так что это может помочь.

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

сначала вам нужно создать FormRequest php artisan make:request MyControllerNameRequest Затем в MyControllerNameRequest определить ваши правила

    public function rules(): array
    {
        return [
            'firstField' => ['required', 'int'],
            'secondField' => ['required', 'int'],
            'thirdFied' => ['required', 'int'],
            'fourthField' => ['required', 'int'],
        ];
    }

после go в вашем контроллере и добавить MyControllerNameRequest как атрибут в действии

public function store(MyControllerNameRequest $request)
{ 
      $model = Model::create($request->validated());

      return redirect()->route('route.name');
}

или в some_name.blade.php необходимо добавить

<input type="text" name="name" value="{{ old('value') }}" required>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...