Laravel视图中显示数据的最佳实践

时间:2016-05-26 16:24:43

标签: php laravel model-view-controller laravel-5.1

最佳做法是什么,例如显示用户数据?

  1. 在UserContoller中的show function中检索用户,并将用户变量传递给视图?

  2. 在show函数中返回视图,传递$ user_id,并在视图上检索用户?

  3. 示例1:

    public function show($id)
    {
        $user = User::findOrFail($id);
        return view('config.users.show')->withUser($user);
    }
    

    示例2:

    public function show($id)
    {
        return view('config.users.show')->withId($id);
    }
    

2 个答案:

答案 0 :(得分:2)

视图负责数据表示。

  

视图可以是任何信息的输出表示,例如a   图表或图表。相同信息的多个视图   可能的,例如管理条形图和表格视图   会计师。

     

模型直接管理数据,逻辑和规则   应用

     

第三部分控制器接受输入并将其转换为   模型或视图的命令

<强> Source

您应该将data传递给视图。并在那里输出,所以你的第一个例子是正确的。

而不是withUser()继续使用with(key, value)

示例:

public function show($id)
{
    $user = User::findOrFail($id);
    return view('config.users.show')->with('user', $user);
}

在视图中:

{{ $user->name }} //assuming user have a name attribute 

答案 1 :(得分:1)

添加到xdevnull的答案,id喜欢添加和分享关于传递数据的更多信息,因为当我第一次学习laravel这是我努力的一个更大的领域,所以我觉得你:)

return view('config.users.show')->withUser($user);

Laravel的动态功能是否应该有效。

但我个人更喜欢 - &gt; with('user',$ user);方法

然后在你的刀片视图中:

{{$user->propertyname}}

我知道在你的情况下你只需要一个模型,但是id think id分享一些传递多个东西的例子

有时您会发现自己传递的是多个模型或数据:

 $user = User::findOrFail($id);
 $someOtherModel = Model::findOrFail($id);

在这种情况下,你应该使用with方式并传递你的东西数组:

return view('config.users.show')->with([

    'user'=> $user,
    'otherModel'=>$someOtherModel

]);

然后在你看来:

{{$ otherModel-&GT; PROPERTYNAME}} {{$用户&GT; PROPERTYNAME}}

最近我发现自己检索了所有ID的结果,以便能够在我视图的不同部分使用特定的结果。我问了一个关于这个的问题,所以给出的答案之一就是将我的模型集合变成一个数组。正如我所说,有时您可能正在检索所有结果,并希望通过特定列或值来选择某些结果。

例如,我有一个模型来跟踪网站数据(电话,地址,社交媒体链接等),并希望将它们传递到我的视图,并根据其名称访问页面的特定部分:

$site_meta = \App\SiteMeta::lists('value', 'name');

return view($page_string, compact('site_meta');

在我的刀片模板上:

{{$site_meta['Facebook']}}

希望这会对你有所帮助,我知道当我学习它的时候肯定会帮助你。)