0

我刚刚继承了一个在自定义 CMS 上工作的 Laravel 3 站点。CMS 输出通过 / 级别的主题文件夹呈现,因此我的文件夹结构如下所示:

-application
-bundles
-laravel
-public
-storage
-theme
  -errors
  -layouts
    -partials

我已经在“/application/controllers”中创建了一个搜索控制器,并且我想为“/theme/layouts”文件夹中的输出和其他模板文件创建我的视图。当我之前使用 Laravel 时,我的视图都在“/application/views”中,我可以指定我的视图:

public $layout = 'layouts.default';

..这将使用'/application/views/layouts/default.blade.php'

如何让我的控制器使用我的“/theme/layouts/searchTemplate.php”文件呈现视图并从控制器传递搜索数据?

4

2 回答 2

1

如果您确实需要将这些文件放在单独的文件夹中,您可能应该使用捆绑包(请参阅文档)。

然而,一个快速而肮脏的解决方案是在视图加载器事件(application/start.php)中添加一个钩子:

Event::listen(View::loader, function($bundle, $view)
{
    if($bundle == 'theme') {
        return View::file('application', $view, Bundle::path('application').'theme');
    }

    return View::file($bundle, $view, Bundle::path($bundle).'views');
});

然后,您可以制作如下视图:

View::make('theme::layouts.default');

这将加载文件“ application/theme/layouts/default.blade.php ”。

于 2013-09-26T15:31:47.563 回答
0

在您的应用程序文件夹中,有一个名为“views”的文件夹您必须在 applications/views/layouts/ 中创建 default.php

使用“layouts.defaults”,它会在视图文件夹中搜索一个名为布局的文件夹。

所以'layouts.default'的完整文件夹将是:./application/views/layouts/default.php

编辑:答案不再是相对的

于 2013-09-26T12:21:46.957 回答