在Laravel中将输入数据传递给刀片模板的正确方法?

时间:2014-12-17 17:06:26

标签: php laravel input laravel-4

当我将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()));
});

或两者都相同,我应该继续使用更短的语法?

3 个答案:

答案 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可以从视图中访问