【问题标题】:extends function from blade doesn't work从刀片扩展功能不起作用
【发布时间】:2014-04-02 13:38:22
【问题描述】:

我有一个问题,我不知道为什么,但是当我扩展刀片模板然后调用它时,它会在我的浏览器中打印一个空白页面。

在我的 /app/views/layout.blade.php 中

<div>
    @yield('main')
</div>

在我的 /app/views/error/notfound.blade.php 中

@extends('layout')
@section('main')
<myhtmlcode>
</myhtmlcode>
@stop

当我发现 NotFoundHttpException 时调用了我的 notfound 模板

App::error(function(\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $exception, $code)
{
    return View::make('error.notfound');
});

其他所有 View::make 都可以正常工作.. 这个之前工作正常.. 但我确实犯了一个无形的错误。我需要你们的后见之明。

谢谢。

【问题讨论】:

  • 确保每个@section 语句都有对应的@stop
  • 是的,当然我在 error.notfound 模板的末尾有一个 @stop 抱歉我忘记了,但我编辑了我的帖子。

标签: php html laravel blade


【解决方案1】:

您在notfound.blade.php 中忘记了@stop

/app/views/layout.blade.php

<div>
    @yield('main')
</div>

/app/views/error/notfound.blade.php

@extends('layout')
@section('main')
<myhtmlcode></myhtmlcode>
@stop

refer to this

【讨论】:

  • 不是你的错,我只是忘记注意了,但我在你写这个答案的时候编辑了我的帖子。所以即使在最后使用 @stop 也不起作用。
  • 至少你让它变得更有趣了。
  • 在您的 App::error 回调中,只需返回一些字符串,例如“未找到”或您喜欢的任何内容,即使它是否被调用也可以进行测试。
【解决方案2】:

好吧,我很明显..

所以我给所有的路线加上前缀

Route::group(array('prefix' => '{lang}', 'before' => 'set.lang'), function($lang) {
});

所以我尝试在我的 route::group 中调用我的模板 notfound.blade.php 并进行路由测试,但它也没有工作.. 但是有一个 php 警告告诉我他在我的 layout.blade.php 中找不到 $lang 变量!

所以我想当我通过捕获 notFoundHtppException 返回我的视图时,也有这个错误,但 laravel 没有显示任何东西..所以我只需要在我的 View::make 中注入 $lang 变量,就像这样app/start/global.php

App::error(function(\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $exception, $code)
{
    return View::make('error.notfound', ['lang' => App::getLocale()]);
});

现在它就像一个魅力..

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 2021-09-26
    • 2019-01-31
    • 2023-03-13
    • 1970-01-01
    • 2015-09-19
    • 2018-08-11
    • 2017-12-10
    相关资源
    最近更新 更多