尝试从刀片模板访问View会导致Laravel4中出现空白

时间:2013-08-01 11:45:09

标签: laravel laravel-4 blade

我有一个使用laravel4及其刀片视图引擎的项目。偶尔我需要通过视图文件调用控制器方法来输出动态数据;顺便提一下,这次是调用一个为页面生成javascript代码的方法。无论这是否是最好的方式,因为我只是从L3升级到L4,这是一个没有实际意义的问题。

我的观点类似于:

@extends('en/frontend/layouts/default')

{{-- Page title --}}
@section('title')
    Page Title
    @parent
@stop

{{-- Page content --}}
@section('pageContent')
    ...
@stop

{{-- Scripts --}}
@section('scripts')
    <?php echo CaseStudy::script(); ?>
@stop

我已经设置了CaseStudy来通过laravel外墙进行加载,而当前的类只是:

class CaseStudy
{

    public function display()
    {

    }

    /**
     * Returns the javascript needed to produce the case study
     * interactivity
     *
     * @return \Illuminate\View\View|void
     */
    public function script()
    {
        $language = \Config::get('app.locale');

        $scriptElementView = $language . '.frontend.elements.casestudy_script';

        if ( ! \View::exists($scriptElementView))
        {
            $scriptElementView = "Training::" . $scriptElementView;
        }

        return \View::make($scriptElementView, array());
    }
}

似乎回应CaseStudy :: script的响应是导致空白体的原因;但是没有进一步的错误消息我不知道发生了什么。我认为这是因为我的静态CaseStudy的View实例与刀片引擎使用的实例冲突。我如何让CaseStudy :: script()返回渲染视图的字符串形式?

谢谢。

1 个答案:

答案 0 :(得分:2)

在你看来

{{-- Scripts --}}
@section('scripts')
    {{ CaseStudy::script() }}
@stop

在你的图书馆

class CaseStudy
{
    public function script()
    {
         $string = "your script here";
         return $string;
    }
}

注意 - CaseStudy应该是一个“库”或“助手”或其他东西。不是控制器 - 实际上并不符合MVC方法。