Laravel 4:ErrorException未定义的变量

时间:2014-05-09 18:58:09

标签: laravel laravel-4 eloquent

尝试几分钟后。我在routes.php文件中有这个

Route::get('home/bookappointment/{id?}', array('as' => 'bookappointment', 'uses' => 'FrontController@getBookAppointment'));

在我的控制器上,我有以下内容:

    public function getBookAppointment($id)
{
        // find all the services that are active for the especific franchise
        $activeServices = Service::whereHas('franchise', function($q) {
                $q->where('franchise_id', '=', $id);
            })->get();

        //var_dump($activeServices);die;

        return View::make('frontend/bookappointment')
                                ->with('services', $activeServices);
}

我一直收到这个错误。 enter image description here

我做错了什么?

2 个答案:

答案 0 :(得分:11)

您无权访问匿名函数中的$id。尝试

<?php
$activeServices = Service::whereHas('franchise', function($q) use($id) {
    $q->where('franchise_id', '=', $id);
})->get();

请查看PHP文档以获取更多信息:http://www.php.net/manual/en/functions.anonymous.php

答案 1 :(得分:1)

路由文件中{id之后的问号表示id是可选的。如果确实应该是可选的,则应在Controller中将其定义为可选。

采用以下示例:

class FrontController extends BaseController {

    public function getBookAppointment($id = null)
    {
        if (!isset($id))
        {
            return Response::make('You did not pass any id');
        }
        return Response::make('You passed id ' . $id);
    }
}

注意如何使用$id参数= null定义方法。这样您就可以允许可选参数。