我有一个使用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()返回渲染视图的字符串形式?
谢谢。
答案 0 :(得分:2)
在你看来
{{-- Scripts --}}
@section('scripts')
{{ CaseStudy::script() }}
@stop
在你的图书馆
class CaseStudy
{
public function script()
{
$string = "your script here";
return $string;
}
}
注意 - CaseStudy应该是一个“库”或“助手”或其他东西。不是控制器 - 实际上并不符合MVC方法。