【发布时间】:2018-06-26 18:11:16
【问题描述】:
给定一个格式为:
<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”)
是否可以使用相应的键(“名字”和“姓氏”)而不是数字键来检索此表单中的数组输入,还是我必须手动指定所有键?
【问题讨论】:
-
尝试在刀片视图中添加 value="{{ $label }}"