У меня есть эта форма
@extends('index') @section('main') <h1>Create a new poll</h1> {{ Form::model(new Poll, ['route' => 'polls.store', 'class' => 'create-poll']) }} <div class="gray-box"> {{ Form::label("topic", "Write your poll question") }} {{ Form::text('topic', '', ['placeholder' => 'Example: What is the best number?', 'id' => 'topic']) }} </div> <div class="gray-box"> {{ Form::label(null, "Write the possible answers") }} {{ Form::text('option[]', null, ['class' => 'option', 'placeholder' => 'Test option']) }} <input type="button" class="more-options" value="Add another option"> {{-- This will create another option[] input element --}} </div> {{ Form::submit() }} {{ Form::close() }} @stop
Это еще не все, но это важная часть. В основном это название опроса. У этого есть тема и по крайней мере один вариант. Нажав на кнопку, вы можете добавить дополнительные параметры.
Это контроллер:
public function store() { $data = Input::all(); // Validate input $validator = Validator::make($data, Poll::$rules); if ($validator->fails()) return Redirect::back()->withErrors($validator)->withInput(); ...
Проблема здесь в том, что WithInput()
выдает ошибку:
ErrorException
htmlentities () ожидает, что параметр 1 является строкой, заданный массив (View: /home/dbugger/laravelproject/app/views/polls/create.blade.php)
Я подозреваю, это потому, что я использую элемент формы массива , но я не уверен, почему и как, поскольку в настоящее время я даже не пытаюсь повторно заполнить форму с помощью (неудавшихся) представленных данных …
Для сгруппированных входов, таких как Form::text('option[]')...
или Form::checkbox('options[]')...
вам нужно перестроить размещенный массив в вашем контроллере:
Что-то вроде:
$optionsInput = Input::get('option'); if(is_array($optionsInput)) { // process your options, eg like this foreach($optionsInput as $key => $input) { $proceededOptionsArray[$key] = $input; } }
Для валидатора применимо то же правило для входов массива, а затем:
// return it with other `Input` return Redirect::back() ->withErrors($proceededValidatorArray + $validator) ->withInput($proceededOptionsArray + Input::all());
{{Форма :: текст ('option []', null, ['class' => 'option', 'placeholder' => 'Test option'])}} в том, как вы назвали опцию текстового поля [] …