当我将POST数据传递给刀片模板时,是否有任何区别:
Route::post('postpage', function()
{
return View::make('postdata')->with('postData', Input::all());
});
这一个?
Route::post('postpage', function()
{
return View::make('postdata', array('postData'=> Input::all()));
});
或两者都相同,我应该继续使用更短的语法?
答案 0 :(得分:3)
正如已经说过,两者都会这样做。区别在于,通过将方法链接到View
对象,您可以在将数据链接到它时实例化和操作View
对象,然后最终将其作为响应返回。 在现实生活中很少发生,因此在大多数情况下,两者都会实现相同的。
但是为了将输入数据传递回视图,有一个更简单的方法:
return View::make('postdata')->withInput();
通过使用withInput()
,您之前的所有输入都将再次传递给视图。
然后,您可以在视图中使用Input::old('email')
来访问它。
确保在使用Input::flash()
之前先在控制器方法中调用withInput()
。 Input::old()
从Session Flashdata中提取数据,这使得必须调用上述方法。 - 感谢pc-shooter提及。
答案 1 :(得分:1)
它们都完全一样。
选择您最喜欢的那个。
请注意,如果您愿意,也可以将数组传递给with
:
return View::make('postdata')->with([
'postData' => Input::all(),
]);
在这种特殊情况下,它没有多大意义,但是当传递大量数据时,你可能会喜欢这种方式。这最终取决于你。
答案 2 :(得分:1)
使用魔术方法
Route::post('postpage', function()
{
return View::make('postdata')->withPostdata(Input::all());
});
$ postdata可以从视图中访问