Laravel 3:视图不存在

时间:2013-09-26 09:55:46

标签: laravel laravel-3

我刚刚继承了一个适用于自定义CMS的Laravel 3网站。 CMS输出通过/ level处的主题文件夹呈现,因此我的文件夹结构如下所示:

-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'呈现视图;文件并从控制器传入搜索数据?

2 个答案:

答案 0 :(得分:1)

如果你真的需要将这些文件放在一个单独的文件夹中,你应该使用bundle(参见docs)。

然而,一个快速而肮脏的解决方案是在视图加载器事件(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 ”。

答案 1 :(得分:0)

在您的应用程序文件夹中,有一个名为' views'的文件夹。 您必须在applications / views / layouts /

中创建default.php

使用' layouts.defaults'它在views文件夹中搜索一个名为layouts的文件夹。

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

编辑:答案不再相对