View中的未定义变量?

时间:2014-10-06 18:00:34

标签: php laravel laravel-4 blade

我有一点我不明白的问题..

我的控制器:

<?php

class SearchController extends BaseController{

    public function postSearch(){

        $course = Input::get('course_category');

        if(empty($course)){

            return Redirect::route('search')
            ->with('global','<div class="alert alert-danger" role="alert" align="center">Du måste välja kurs och universitet!</div>');

        }else{

            $courses = Posts::where('course_category','LIKE','%'.$course.'%')->get();

            return View::make('search')
                            ->with('course_category',$courses)
                            ->with('courses',$courses);
        }

    }
}

我的观点:

@extends('layout.main')
@section('content')



{{Form::open(array('method' => 'POST', 'route' =>array('post-search')))}}

<div class="form-group">
    {{Form::label('course_category','Språk')}}
    {{Form::select('course_category',array(
        ''              =>'-Choose--',
        'php'            => 'PHP',
        'javascript'     =>'Javascript',
        'java'           =>'Java',
        'C#'             =>'C#',
        'html'           =>'HTML',
        'css'            =>'CSS',
        '.net'           =>'.NET',
        'jquery'         =>'jQuery',
        'ajax'           =>'Ajax'

    ))}}
</div>

    {{Form::submit('Sök',array('class'=>'btn btn-info'))}}

    {{Form::token()}}

{{Form::close()}}


@if($courses->count())

    @foreach($courses as $c)

        <p>{{$c->title}}</p>

    @endforeach

@endif

@stop

这是我的View搜索引发的错误:

  

ErrorException(E_UNKNOWN)   未定义的变量:课程(查看:/Applications/MAMP/htdocs/LaraBoost/app/views/search.blade.php)

当我从控制器传递给View时,视图中的$ courses变量是如何被定义的?

我错过了什么?

1 个答案:

答案 0 :(得分:0)

看起来,你的控制器代码有问题,逻辑看似不对,但为了克服视图问题,你可以尝试这样的事情:

@if(isset($courses) && $courses->count())
    //...
@endif

由于$courses未定义,因此未发送。{p}如果你试试这个

@if(isset($courses) && $courses->count())
    //...
@else
    {{'No Courses'}}
@endif

您会明白这一点,并让您了解自己在做什么。