将输入数据传递到拉拉维尔中的刀片模板的正确方法


Right way to pass input data to blade template in Laravel?

当我将 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可以从视图中访问