Var从子视图清空到父视图Laravel

时间:2015-11-16 09:48:00

标签: php laravel

我的观点中有一种非常奇怪的行为。我有一个名为“access.blade.php”的父视图和子视图“survey.blade.php”。

我在父视图中实例化了2个vars,这些变量是空数组。

我在子视图中填充它们但是当我在子视图的包含之后在父视图中对它们进行var_dump时,我的var是空的......

这是父视图:

@extends('template')

@section('title')
    Compile result
@stop

@section('content')

<div id="access" class="container-fluid main-content">

    <div class="row">
        <div class="col-xs-6 col-md-push-3 col-xs-push-3">

            <div class="page-title white-text text-center">
                <h1>Access Report</h1>
            </div>
            <div class="widget-container fluid-height clearfix">

                <?php
                    $session = Sessions::find($params['session_id']);
                    $userNotSeen = [];
                    $userSeen = [];
                ?>

                <div class="heading">
                    <button class="btn btn-success btn-xl pull-right" role="button" data-toggle="modal" data-target="#complianceModal">Compliance</button>
                    Access Report for
                    {{ isset($result->content->display_name) ? $result->content->display_name : $result->content->title }}


                    <p>
                        Journey: {{ $session->location_id != null ? $session->location->city : $session->place }}
                    </p>

                </div>

                <div class="row text-center"></div>

                <div class="row">
                    <div class="col-sm-offset-1 col-sm-10">
                        @if($result != null)
                            @if($result->content_type == 1)
                                @include('contents.partials.access.tasklist')
                            @elseif($result->content_type == 2)
                                @include('contents.partials.access.resources')
                            @elseif($result->content_type == 3)
                                @include('contents.partials.access.survey')
                            @elseif($result->content_type == 4)
                                @include('contents.partials.access.feedback')
                            @elseif($result->content_type == 5)
                                @include('contents.partials.access.memo')
                            @elseif($result->content_type == 6)
                                @include('contents.partials.access.gear')
                            @elseif($result->content_type == 7)
                                @include('contents.partials.access.sinsim')
                            @elseif($result->content_type == 8)
                                @include('contents.partials.access.changr')
                            @endif
                        @else
                            <p class="text-center">{{ $errors }}</p>
                        @endif

                        <pre>
                            {{ var_dump($userNotSeen) }}
                        </pre>
                         <pre>
                            {{ var_dump($userSeen) }}
                        </pre>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
    @include('contents.partials.modal')
@stop

这是我的孩子观点

<table class="table">
    <thead>
    <tr>
        <th>Name</th>
        <th class="text-center">Viewed</th>
        <th class="text-center">Submitted</th>
        <th class="text-center">Personnal Results</th>
    </tr>
    </thead>
    <tbody>
    @if(isset($result->data))
        @forelse($result->data as $key => $value)
            <tr {{ $value->view == 0 ? 'class="notyetseen"' : ''; }}>
                <td>{{ $value->fullname }}</td>
                <td class="text-center">{{ $value->view == 0 ? 'No' : 'Yes' }}</td>
                <td class="text-center">{{ $value->done == 0 ? 'No' : 'Yes' }}</td>
                <td class="text-center">
                    <a href="/manage/{{ $params['session_id'] }}/content/{{ $params['content_id'] }}/{{ $params['content_type'] }}/access/{{ $key }}" class="btn btn-sm btn-success">Get results</a>
                </td>
            </tr>
            <?php
                if($value->view == 0) {
                    array_push($userNotSeen, $key);
                } else {
                    array_push($userSeen, $key);
                }
            ?>
        @empty
            <tr><td colspan="3" class="text-center">{{ $errors }}</td></tr>
        @endforelse
    @else
        <tr><td colspan="3" class="text-center">No participants for this journey</td></tr>
    @endif
    </tbody>
</table>

我知道它为什么不起作用:也许父视图在子视图之前完全加载,所以我的var还没有填充。

如果是这样,有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

首先,永远不要在模板中包含逻辑。将此逻辑移动到控制器并将结果传递给视图。模板仅用于显示您的数据。

  

如果您必须在 Blade 模板中使用<?php,那么您做错了。

其次,Blade单独编译模板。这不是一个简单的include(__child_template__)。这就是为什么在编译每个模板时,Blade使用完全不同的变量范围,而 access.blade.php 模板中的$userNotSeen survey.blade中的模板不同。 PHP