Получение нескольких полей ввода в запросе POST - PullRequest
0 голосов
/ 26 октября 2018

Что я строю: Я пытаюсь создать приложение, которое позволяет пользователям прогнозировать результаты предстоящих футбольных игр, для каждой игры есть 2 поля ввода, одно для homeTeamи один для awayTeam.

Цель: После того, как пользователь спрогнозировал счет, я хочу получить все поля ввода числа + имя homeTeam и awayTeam.Мне нужен какой-то способ узнать, что эти 2 поля ввода чисел представляют правильное совпадение.(У меня есть идентификатор совпадения)

С помощью следующего кода я получаю только последнее поле ввода, предоставляет ли laravel какие-либо методы для получения каждого поля ввода?+ как я могу добавить названия команд к моему запросу?(они не являются полями ввода)

Код:

<ul class="match-table">
    {!! Form::open(['method'=>'POST', 'action'=>'PredictionController@store']) !!}
            @foreach($matches as $match)
                <div class="specific-match-table container mb-5">
                   <div class="row">
                        <div class="team d-flex align-items-center col-sm-5">
                            <p>{{$match->homeTeam}}</p>
                        </div>
                        <div class="row col-sm red">
                            {{Form::number('homeTeam', '', ['placeholder' => '0', 'class' =>'form-control col-sm'])}}
                            <span class="vs">vs</span>
                            {{Form::number('awayTeam', '', ['placeholder' => '0', 'class' =>'form-control col-sm'])}}
                        </div>
                        <div class="team d-flex align-items-center justify-content-end col-sm-5">
                            <p>{{$match->awayTeam}}</p>
                        </div>
                    </div>
                </div>
            @endforeach
     {{Form::button('Submit', ['type' =>'submit', 'class' => 'submit-btn'])}}              
     {!! Form::close() !!}
</ul>

Контроллер:

class PredictionController extends Controller
{
  public function store(Request $request) {

      $requestData = $request->all();

      dd($requestData);
  }
}

DD результат:

array:3 [▼
  "_token" => "4nhqdD7rEfl4BmDyT6KiWn5zAD4r2EHaKIvXJQmJ"
  "homeTeam" => "5"
  "awayTeam" => null
]

"5" => - номер в последнем поле ввода

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

То, что вы хотите, это использовать массивы.

Измените Form::number('homeTeam', на Form::number('match[' . $match->id . '][homeTeam]', и Form::number('awayTeam', на Form::number('match[' . $match->id . '][awayTeam]',.

Вы получите результат как $match[N][awayTeam] = X. Запустите dd($request->get('match')) в вашем контроллере для просмотра массива.

Если вы также хотите, чтобы название каждой команды использовалось скрытое поле ввода внутри вашего цикла.

<input type='hidden' name='match[{{ $match->id }}][awayTeamName]' value='{{ $match->awayTeam }}' />
<input type='hidden' name='match[{{ $match->id }}][homeTeamName]' value='{{ $match->homeTeam }}' />
0 голосов
/ 26 октября 2018

Добавьте «[]» к имени ваших полей, это создаст массив значений.Как «homeTeam []» вместо «homeTeam».Так вы получите например:

'homeTeam' => array(
"1",
"3",
"5"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...