【问题标题】:Laravel Parameter passing error from controller to view从控制器到视图的 Laravel 参数传递错误
【发布时间】:2017-12-06 23:40:14
【问题描述】:

我想把参数$questions传给view,但是报错:

错误异常 (E_ERROR) 未定义变量:问题(查看:C:\Users\Krishan\Documents\GitHub\GroupProject\lcurve\resources\views\quizz\questions\index.blade.php)

这是我的控制器索引功能部分:

public function index()
{
    $questions = Question::all();    
    return view('quizz/questions.index', compact('questions'));
}

这是我观点的一部分:

<tbody>
    @if (count($questions_options) > 0)
        @foreach ($questions_options as $questions_option)
            <tr data-entry-id="{{ $questions_option->id }}">
                <td></td>
                <td>{{ $questions_option->question->question_text or '' }}</td>
                <td>{{ $questions_option->option }}</td>
                <td>{{ $questions_option->correct == 1 ? 'Yes' : 'No' }}</td>
                <td>
                    <a href="{{ route('quizz/questions_options.show',[$questions_option->id]) }}" class="btn btn-xs btn-primary">View</a>-->
                    <!--<a href="{{ route('questions_options.edit',[$questions_option->id]) }}" class="btn btn-xs btn-info">Edit</a>-->
                    {!! Form::open(array(
                                        'style' => 'display: inline-block;',
                                        'method' => 'DELETE',
                                        'onsubmit' => "return confirm('".trans("quickadmin.are_you_sure")."');",
                                        'route' => ['questions_options.destroy', $questions_option->id])) !!}
                                    {!! Form::submit(trans('quickadmin.delete'), array('class' => 'btn btn-xs btn-danger')) !!}
                                    {!! Form::close() !!} 
                </td>
            </tr>
        @endforeach
    @else
        <tr>
            <td colspan="5">no_entries_in_table</td>
        </tr>
    @endif
</tbody>

enter image description here

【问题讨论】:

    标签: php laravel-5


    【解决方案1】:

    questions_options 来自哪里?您正在传递questions。所以你的 for 循环应该是

    @if (count($questions) > 0)
      @foreach ($questions as $question)
         //rest of your code
      @endforeach
    @endif
    

    您的返回视图部分可以是return view(quizz.questions.index, compact('questions'))

    【讨论】:

      【解决方案2】:

      首先,应该显示您提到的错误消息。错误消息应该是: Undefined variable: questions_options (View:C:\Users\Krishan\Do........

      因为您将questions 传递给查看,但您正在访问question_options。所以,它应该在未定义的视图中显示question_options

      此外,您知道您可以避免这种计数检查吗?您可以在下面使用 laravel 的 forelse 标签:

      @forelse($questions as $question)
           //Your table goes here
      @empty
         <tr>
            <td colspan="5">no_entries_in_table</td>
         </tr>
      @endforelse
      

      【讨论】:

        猜你喜欢
        • 2016-10-11
        • 1970-01-01
        • 2019-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多