我想创建我的自定义内容管理系统,并且我想创建一个user包,在其中我将拥有一个带有showProfile()函数的控制器。但问题是,我想很容易地编辑这个纵断面图。所以我想知道是否有一种方法可以创建级联视图。例如,如果app/views/中没有文件,那么将加载供应商/供应商/包/src/views。我希望你能明白这一点:)
编辑:
我设法让它工作了。我必须在我的ServiceProvider中为视图注册新的名称空间。我将此代码放入ServiceProvider:
\View::addNamespace('cmscore',array(app_path()./'views/packages/zaalbarxx/cmscore');
其中zaalbarxx/cmscore是供应商/包,cmscore是我以后可以在控制器中使用的名称空间,如View::make('cmscore::index')。我将此代码添加到boot()方法中的$ this ->package()之前,这样应用程序/视图优先于package/views。做得很好。
发布于 2013-07-09 20:24:54
这已经是可能的,但是它的结构将在缺省情况下查看vendor/package-name/src/views
,但如果在app/views/packages/package-name/
中有等价物,则将选择该结构。
发布于 2013-07-09 20:36:39
如上所述,您应该已经能够加载包视图了。
但是,可以在app/config/view.php中找到的阵列中添加更多视图位置。
此外,可以在运行时使用FileViewFinder
类中的addLocation()方法添加视图路径。
在服务提供商中使用该方法将如下所示:
$app['view.finder']->addLocation('/path/to/views');
或应用程序中的任何位置:
App::make('view.finder')->addLocation('/path/to/views');
还请注意,我最近回答了this question on cacheing view output,这可能会帮助您了解,如果您选择沿着这条路线走下去,扩展视图包的某些部分是如何工作的。
发布于 2014-01-15 10:01:19
你不需要对这个行为进行编程,如果你阅读了laravel代码,你会发现这是内置的……
默认情况下,软件包将首先查找in和app/views/packages/package-name/
(全部为小写!即使软件包或作者是有上限的!在windows上不会被注意到,然后在linux上你会把头撞到墙上!)
如果customer应用程序视图不存在,包视图将从包本身中加载:vendor/author/package-name/src/views
https://stackoverflow.com/questions/17545419
复制相似问题