【问题标题】:Laravel undefined variable ID ControllerLaravel 未定义变量 ID 控制器
【发布时间】:2014-12-29 04:24:51
【问题描述】:

我遇到以下错误:

ErrorException (E_UNKNOWN) 未定义变量:id

下面是我的代码,它来自“控制器”

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

更新:我的路线是:Route::get('/message/{id}', 'MessageController@show')->before('auth');

我不明白,我在搞什么鬼,我已经在函数参数中传递了$id

【问题讨论】:

  • 调用show时确定$id参数不为空?
  • 你的表演路线是什么?
  • 你的路由应该是这样的 Route::get('show/{id}', 'YourController@show');
  • @ecnepsnai,这很明显。我的路线正在使用 {id}
  • 我不知道为什么孩子会这么想,他们是天才和利率 -1 ,答案是一些真正缺失的东西,他们也不知道。

标签: php laravel-4


【解决方案1】:

不,你没有。
当您尝试在传递给where()/orWhere() 方法的lambda 函数中使用变量$id 时,变量$id 被传递给函数show()。 如果您希望在外部范围内使用 lambda 函数变量,则应使用 use($variableName) 构造。

function($query) use($id) {代替function($query) {

关于use的相关答案:https://stackoverflow.com/a/8403958/882813
请记住变量早期绑定。

【讨论】:

  • 是的,这就是答案。谢谢
猜你喜欢
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多