当我将 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()));
});
或者两者都是一样的,我应该继续使用更短的语法?
正如已经说过的那样,两者都会做同样的事情。不同之处在于,通过将方法链接到View
对象,您将能够实例化和操作View
对象,同时将数据链接到该对象,然后再最终将其作为响应返回。在现实生活中,这种情况很少发生,因此在大多数情况下,两者都会达到相同的目的。
但是,要将输入数据传递回视图,有一种更简单的方法:
return View::make('postdata')->withInput();
通过使用withInput()
您之前的所有输入将再次传递到视图。然后,您可以使用视图中的Input::old('email')
例如访问它。
请确保在使用 withInput()
之前先在控制器方法中调用 Input::flash()
。 Input::old()
从会话闪存数据中提取数据,这使得调用上述方法成为必要。- 感谢电脑射手的提及。
它们完全相同。
选择您最喜欢的一个。
请注意,如果您愿意,也可以将数组传递给with
:
return View::make('postdata')->with([
'postData' => Input::all(),
]);
在这种特殊情况下,它没有多大意义,但是当传递大量数据时,您可能会喜欢这种方式。这最终取决于你。
使用魔术方法
Route::post('postpage', function()
{
return View::make('postdata')->withPostdata(Input::all());
});
$postdata可以从视图中访问