2014-02-23 3 views
0

는이 코드가 작동하지 않는 이유 나를 알아내는 데 도움 수 :Laravel 4 컨트롤러 매개 변수 범위

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); 

} 

내가 단순히 어디에서 $ 슬러그를 교체() $ slug가 정의되지 않았다는 오류 메시지와 함께 페이지가 끊어지기 때문입니다. die ($ slug)로 페이지를 죽이면 올바른 값을 반환하고, 두 번째 예제에서와 같이 정적 슬러그 값에 대한 변수를 바꾼 경우 올바른 페이지가로드됩니다.

새로운 매개 변수를 사용하는 함수에 있기 때문에 $ slug가 작동하지 않습니까?

답변

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가 전달됩니다.

+0

다시 확인하십시오. 고맙습니다! –

관련 문제