Laravel 4:在视图中显示数据的正确方法是什么?

时间:2014-04-15 17:30:08

标签: php templates laravel laravel-4

让我更好地解释一下自己。

例如,我有一个页面只做一件事:它以一个很好的字体显示用户名。

正确的方法是什么,通过“正确的方式”,我指的是尊重MVC的方式,实现它?

我认为直接调用模型中的方法不会尊重MVC模式,但通过对服务器的新GET / POST请求调用控制器的方法会有点浪费,因为在更复杂的页面上我应该拨打太多电话。

我也读过关于Laravel's View Composer的内容,但即使阅读了它的文档,我仍然不确定应该如何实现它。

如果可能的话,除了我之前的问题,我可以有一个简单的例子来帮助我更好地理解吗?

1 个答案:

答案 0 :(得分:1)

基本上,这是您从控制器向视图发送信息的方式:

假设您有一条通过GET(HTTP REQUEST方法)期望用户ID的路​​由:

Route::get('user/{id}', 'PagesController@showUserName');

它指向您的CONTROLLER(app/controllers/PagesController.php)中的一个操作,该操作从存储库(MODEL?)获取信息并发送到您的VIEW:

class PagesController extends Controller {

    public function showUserName($id)
    {
        $user = $this->userRepository->getUserById($user_id);

        return View::make('userNamePage')->with('userName', $user->name);
    }

}

您的VIEW(app/views/userNamePage.blade.php)只显示一个大用户名:

@extends('layouts.main')

@section('content')
    <h1>{{$userName}}</h1>
@stop

您获取发送到视图的信息的方式完全取决于您,但您不应在控制器或视图中输入太多登录信息,这就是我使用存储库的原因,但您会看到很多直接从MODEL获取信息的人,这对小型应用程序是可接受的:

$user = User::find($id);

与做的相同:

$user = User::where('id', $id)->first();

$user = DB::table('users')->where('id', $id)->first();