【问题标题】:Laravel view:make issue with child viewLaravel 视图:使子视图出现问题
【发布时间】:2016-04-19 00:18:13
【问题描述】:

抱歉,如果这是补救措施。我是 Laravel 的新手,老实说,我的布局游戏很弱。这是情况。我在 app.blade.php 中有一个主布局。这很好用。然后我取出欢迎页面的内容部分并将其作为welcome.blade.php 放在单独的视图中,我从@yield 调用它。完美运行。但是,该欢迎文件仍然很长,我很想将它分成几个部分,并为每个部分包含单独的视图。在非 Laravel 世界中,这就像

<?php include('firstsection.php'); ?>

在 Laravel 中并没有那么多,经过大量搜索和修改后,我觉得我离正确答案越来越远了。我所做的是将第一部分分解为 firstsection.blade.php,并将该文件放在资源文件夹的视图文件夹中。然后我试图用

来调用它
<?php echo View::make('view.firstection') ?>

这个,还有几个不同的版本,比如将 .blade.php 附加到视图名称,都会给我 View Not Found 错误。我在这里浏览了很多问题,我想答案只是迷失了。谁能给点建议?

【问题讨论】:

    标签: php layout laravel-5 laravel-5.1 laravel-blade


    【解决方案1】:

    你需要的是@include 指令来包含你的部分布局。所以在你的 Blade 模板中你可以这样做:

    @include('firstsection')
    

    将主视图分成较小的视图。

    您可以在Control structures 阅读更多信息 - 包括子视图部分

    编辑

    默认情况下所有视图都相对于resources/views目录,

    如果您有文件 resources/views/test.blade.php 包含它,您只需使用

    @include('test')
    

    当你有文件resources/views/search/test.blade.php 包含它时,你应该使用:

    @include('search.test')
    

    你在这里使用.作为目录分隔符

    【讨论】:

    • 我多次阅读该部分,最初尝试将此作为@include,但无法使其正常工作。也许我想多了,或者被“共享”抛弃了,因为这似乎暗示我需要在名为 shared 的资源\视图中创建一个文件夹,并将视图放在那里,或者“共享”是一个与“视图”完全不同的结构。
    • 不。同样的错误。具体来说是未找到视图 [view.firstsection]。 (查看:/home/me/web/site/resources/views/welcome.blade.php)。好像我需要在控制器中创建这个视图,或者在模板中使用 View:make 函数,不是吗?而且我不愿意在控制器中创建视图,因为我也会将数据传递给一些视图。
    • 假设您在resources/views 文件夹中有您的app.blade.php。您现在可以在此目录中再创建一个文件,比如说test.blade.php,现在在您的app.blade.php 中,您可以使用@include('test') 包含它
    • 那个!!!我几乎希望您将其作为单独的答案发布,并解释为什么要使用“视图”。不需要,即使它在整个文档中都是这样。但事实上,我将标记为已解决,并希望如果其他人偶然发现它,他们会阅读这些 cmets。谢谢你,先生。
    • @BlindFish 我已经更新了我的答案,让任何人都更清楚
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多