除了遍历视图层中的数据外,不要做任何事情。基本上,laravel 中的普通 MVC 模式可能是这样的:
这一切都始于路由层(顺便说一句,在 laravel 中很棒)
使用闭包
Route::get('/home', function()
{
//Here data is an array, normally you would fetch data
//from your database here and pass it to the View.
$data = array('this', 'is', 'my', 'data-array');
return View::make('my.view')->with(compact('data');
});
使用控制器(和控制器方法)
//the same route is bound to a controller method
Route::get('/home','HomeController@myFunction');
上面的控制器可能看起来像这样:
<?php
class HomeController extends BaseController {
//The function you call from your route
public function myFunction()
{
$data = array('this', 'is', 'my', 'data-array');
return View::make('my.view')->with(compact('data');
}
}
上面的例子只是展示了 MVC 中的 VC,但通常你以同样的方式从你的模型中传递数据。
这是一个快速的:
控制器中的模型使用
public function myFunction($user)
{
$userdata = User::find($user)->orderBy('firstname', 'desc');
$infodata = Event::find(1)->course;
return View::make('my.view')->with(compact('data', 'infodata');
}
所以这个想法是 laravel 可以让你以多种方式做事。如果您有一个小型应用程序,并且确定您可以在没有控制器的情况下进行管理,您可以跳过控制器并将所有内容保留在路由层中。
然而,对于大多数应用程序来说,需要控制器来控制应用程序中的数据流。
如果您对 MVC 完全陌生,您应该查看一些关于该主题的 tuts。
编辑:
啊哈!因此,您想在所有视图中共享一些数据!那很简单。因为您所有的控制器都扩展了 BaseController,您可以简单地在其中传递数据。像这样:
class BaseController extends Controller {
public function __construct()
{
$data = array('alot', 'of', 'data');
return View::share('data', $data);
}
}
现在数据变量在所有视图中都可用。
PS。过滤器旨在过滤东西,例如检查某些东西是否“正常”。这可能包括检查经过身份验证的用户或表单提交等。