Предоставляется форма в формате:
<form method="POST" action="{{ route('post') }}">
{{ csrf_field() }}
@foreach([
'firstname' => 'First name',
'lastname' => 'Last name',
] as $key => $label)
<label for="person[{{ $key }}]">{{ $label }}</label>
<input name="person[{{ $key }}]" id="person[{{ $key }}]" type="text" />
@endforeach
<input type="submit" value="Send" />
</form>
И модель:
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
protected $fillable = [
'firstname',
'lastname',
];
}
Я бы хотел использовать функцию Laravel Illuminate\Http\Request::input()
для извлечения всех полей person
из формы и заполнения модели из нее.
Пример маршрута, который я использовал для проверки этой функциональности:
use Illuminate\Http\Request;
use App\Person;
Route::post('/testcase', function(Request $request) {
$person = new Person;
$fields = $request->input('person.*');
$person->fill($fields);
var_dump(
$person->firstname,
$person->lastname,
$fields
);
return response('');
})->name('post');
Однако возвращается следующий ответ:
NULL
NULL
array(2) {
[0]=>
string(4) "John"
[1]=>
string(3) "Doe"
}
(где форма была заполнена значениями "firstname" => "John" и "lastname" => "Doe")
Можно ли получить входные данные массива из этой формы с соответствующими им ключами («имя» и «фамилия») вместо цифровых клавиш, или мне придется указывать все ключи вручную?