2014-12-29 3 views
0

я получаю ниже ошибки:Laravel неопределенной переменной ID контроллера

ErrorException (E_UNKNOWN) Undefined variable: id

ниже мой код, это от "Controller"

public function show($id) 
 
\t { 
 
\t \t if(Auth::user()) { 
 
\t \t \t $message = Message::where(function($query) { 
 
\t \t \t \t $query->where('from_user', '=', Auth::user()->username)->where('id', '=', $id); 
 
\t \t \t })->orWhere(function($query) { 
 
\t \t \t \t $query->where('from_user', '=', Auth::user()->username)->where('id', '=', $id); 
 
\t \t \t }); 
 
\t \t \t if($message == null) { 
 
\t \t \t \t return Redirect::action('[email protected]'); 
 
\t \t \t } 
 
\t \t \t return View::make('view', ['message' => $message, 'active' => 'none']); 
 
\t \t } 
 
\t }

Update: Мои Маршрут: Route::get('/message/{id}', '[email protected]')->before('auth');

Я не мог понять, что я возился, я уже прошел $id в аргументе функции.

+0

Когда вы вызываете 'show', вы уверены, что параметр' $ id' не равен нулю? –

+0

Каков ваш маршрут для шоу-мероприятия? –

+0

Ваш маршрут должен быть таким: Route :: get ('show/{id}', 'YourController @ show'); –

ответ

0

Нет, вы этого не сделали.
Переменная $id передается функции show(), в то время как вы пытаетесь использовать ее внутри функции лямбда, переданной методу where()/orWhere(). Если вы хотите использовать внутреннюю переменную лямбда-функции из внешней области, вы должны использовать конструкцию use($variableName).

Вместо function($query) { использование function($query) use($id) {

Соотнесите ответить о use: https://stackoverflow.com/a/8403958/882813
Имейте в виду переменную раннего связывания.

+0

Да, это ответ. благодаря – user3767643