1

我希望扩展 Laravel 4 以包含ViewModel对象,或者可能使Views行为像 aViewModel并创建一个单独的模板部分。我更喜欢为此使用 Mustache,但这不是必需的。

是否有任何好的库或代码片段可以让我扩展基本的 Laravel 功能并ViewModel在我的控制器和 HTML 模板之间插入一个。任何帮助,将不胜感激!

4

1 回答 1

1

我不确定我是否完全理解您的问题 - ViewComposers不适合吗?

根据您要实现的目标,您还可以挂钩在视图组合之前触发的 View Composer 事件,如下所示:

app/start/global.php 或 PackageServiceProvider

\Event::listen('composing: *', function($view) {
     //custom code here acting upon the instantiated View object
}

在我输入的地方composing: *,* 对应于视图名称,在这种情况下匹配任何视图名称。

您可以通过命名您的视图并创建响应不同名称空间的事件侦听器来更进一步您可以为您的 mustache 视图注册一个新的名称空间,然后只响应该名称空间中的视图,通常我会将我的 mustache 视图公开dir 以便可以在客户端访问它们,因此您可以执行以下操作:

app/start/global.php 或 PackageServiceProvider

\View::addNamespace('m', public_path() . '/views');
\Event::listen('composing: m::*', function($view) {
     //custom code here acting upon the instantiated View object when a namespaced mustache view is composed.
}

然后,您将使用以下方法制作这些视图:

View:make('m::view_name')

使视图

public/views/view_name.mustache

如果以上内容不能满足您的需求,您可以查看Presenter - 我没有尝试过这个包,但可能是您想要的。

希望这会有所帮助,如果我误解了您的问题,请见谅

于 2013-10-18T13:20:35.240 回答