【问题标题】:Laravel 4: What is the correct way to display data in a view?Laravel 4:在视图中显示数据的正确方法是什么?
【发布时间】:2014-04-15 17:30:08
【问题描述】:

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

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

什么是正确的方式,我所说的“正确方式”是指尊重 MVC 的方式来实现它?

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

我还阅读了有关 Laravel's View Composer 的信息,但即使在阅读了它的文档之后,我仍然不确定应该如何实现它。

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

【问题讨论】:

  • 你能解释一下吗?我不明白为什么调用控制器函数是一种浪费
  • 你已经在使用 laravel .. 所以你甚至假装你“尊重 MVC”有什么意义呢?
  • 这并不意味着因为我使用的是 Laravel,所以我所做的一切都可以。我不认为在视图中直接调用模型方法尊重 MVC 模式。

标签: php templates laravel laravel-4


【解决方案1】:

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

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

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

它指向您的控制器 (app/controllers/PagesController.php) 中的一个操作,该操作从存储库(模型?)获取信息并发送到您的视图:

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

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

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

这和做的一样:

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

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

【讨论】:

  • 感谢您的回答。现在我对 Laravel 和 MVC 模式有了更清晰的了解 :) 祝你早日愉快!
猜你喜欢
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 2015-04-19
  • 2017-04-19
相关资源
最近更新 更多