让我更好地解释一下自己。
例如,我有一个页面只做一件事:它以一个很好的字体显示用户名。
正确的方法是什么,通过“正确的方式”,我指的是尊重MVC的方式,实现它?
我认为直接调用模型中的方法不会尊重MVC模式,但通过对服务器的新GET / POST请求调用控制器的方法会有点浪费,因为在更复杂的页面上我应该拨打太多电话。
我也读过关于Laravel's View Composer的内容,但即使阅读了它的文档,我仍然不确定应该如何实现它。
如果可能的话,除了我之前的问题,我可以有一个简单的例子来帮助我更好地理解吗?
答案 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();