2016-09-30 3 views
0

は私が得たOK laravelコレクションオブジェクトとこの「メインの」ブレード・テンプレートが$projectsとビューのforeachスコープ変数は

「main.blade.php」

... 
<div id="projects-list"> 
    <?php $last_id = 0; ?> 
    @include('partials._project') 
</div> 

<div>{{ $last_id }}</div> 
... 

と 'に渡されると呼ばれますpartials._project.blade.php」テンプレートはそう問題は、この時点<h4>{{ $last_id }}</h4>で私は、プロジェクトIDの正しい値を得ることである。この

@foreach($projects as $project) 

    <?php $last_id = $project->id ?> 

    <a href="{{ action('[email protected]', $project->uri) }}"> 
     <h4>{{ $last_id }}</h4> 
     <img src="{{ $project->getProjectImage($project->poster) }}"> 
    </a> 
@endforeach 

(ように見えます最後のブロックは

)私は0(初期値を取得する(ループが終わった後)

しかし<div>{{ $last_id }}</div>で私main.blade.phpに)6の値を示している私は、ブレード@foreachループが外側に何influanceを持っていないと思いますスコープの変数... または間違っていますか?

+0

'main.blade.php'と' partials._project.blade.php '' $ last_id'をコントローラから渡すとアクセスできます! –

+0

は 'partials._project.blade.php'ファイル名ですか? –

答えて

0

あなたのループで正しく理解されていれば、PHPはローカル変数$last_idを作成しますが、グローバル変数$last_idは使用しません。あなたのケースでは、ループを実行し、ローカル変数$last_idを作成し、$project->idから値を入れます。グローバル変数$last_idは変更されていません。ループが終了したら、$last_idをグローバルスコープから出力しました。これは変更されていないので、0に等しくなります。

+0

これでどうすれば対処できますか? ループ内の外部変数に値を割り当て、ループ外の値にアクセスする必要があります。 それは刃では不可能ですか? –

+0

'$ GLOBALS'配列に変数を代入しようとしています。あなたのmain.bladeで '<?php $ GLOBALS ['last_id'] = 0; ?> php $ last_id = 0の代わりに?あなたのループの中で '?>' '?' '$ {$ last_id '} = $ project-> id?>' '{{$ GLOBALS [' last_id ']}}' – heavymetal91