Laravel 4控制器参数范围

时间:2014-02-23 00:46:16

标签: php laravel controller laravel-4 undefined

你能帮我弄清楚为什么这段代码不起作用:

public function getByTag($slug) {

    $posts = Post::whereHas('tags', function($q) {
        $q->where('slug', '=', $slug);
    })->paginate(5);

    return View::make('home')->with('posts', $posts);

}

当这样做时:

public function getByTag($slug) {

    $posts = Post::whereHas('tags', function($q) {
        $q->where('slug', '=', 'test');
    })->paginate(5);

    return View::make('home')->with('posts', $posts);

}

我只是替换了where()方法中的$ slug,因为页面中断了一个错误,说$ slug是未定义的。如果我用die($ slug)杀死页面,它会返回正确的值,如果在第二个例子中,我将变量换成静态slug值,页面会加载正确的帖子。

$ slug是否无法访问,因为我在一个接受新参数的函数中?

1 个答案:

答案 0 :(得分:1)

public function getByTag($slug) {

    $posts = Post::whereHas('tags', function($q) use ($slug) {
        $q->where('slug', '=', $slug);
    })->paginate(5);

    return View::make('home')->with('posts', $posts);

}

添加use ($slug),以便传递$ slug。