0

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

laravel ファサードを介してロードするように CaseStudy をセットアップしました。現在のクラスは次のとおりです。

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() がレンダリングされたビューの文字列形式を返すようにするにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

2

あなたの見解では

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

ライブラリ内

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

注 - CaseStudy は実際には「ライブラリ」または「ヘルパー」などである必要があります。コントローラーではありません-MVCアプローチに実際には準拠していません。

于 2013-08-01T12:18:08.300 に答える