【问题标题】:Laravel route giving undefined variable even though route list match up即使路由列表匹配,Laravel 路由也会给出未定义的变量
【发布时间】:2020-10-10 22:04:02
【问题描述】:

我有一个创建一组图库照片并通过模型保存它们的视图。我还想引入一种删除和更新新图像的方法。但由于某种原因,在控制器中声明到 Update 方法的路由时,我的表单路由给了我一个 Undefined variable home

查看表单路由声明:

{!! Form::open(['url' => route('admin.home.update', ['id' => $home->id]), 'method' => 'put', 'id' => 'amend_form', 'enctype'=>"multipart/form-data"])!!}

资源更新路由列表:

y                          | web,admin
|        | PUT|PATCH | admin/home/{home}    | admin.home.update               |App\HttpControllers\Admin\AdminHomeController@update  

路由资源声明:

Route::resource('home', 'AdminHomeController');

控制器更新方法

public function update(Request $request, $id)
    {
        //
    }

有人可以指出正确的方向来解决错误的原因吗?

【问题讨论】:

  • 您是否将变量 $home 从 AdminHomeController 中的 index() 传递到您的视图?如果不是,那么您将收到错误,因为您的视图需要它。

标签: php laravel url-routing


【解决方案1】:

$home->id 未定义。 如果 $home->id 未定义,那么您需要定义它,以告诉您的 Model / DB 哪个 id 将被更新。

【讨论】:

  • 仍然收到相同的Undefined variable: home 错误,指向视图源作为错误来源(View: localhost/site/resources/views/admin/home/index.blade.php)
  • route('admin.home.update', $home->id) 有什么改进吗?
  • 如果不起作用,则 $home->id 尚未定义。使用route('admin.home.update', ['home' => 1]) 进行检查,现在会发生什么?
  • 太棒了。使用参数['home' => 1]加载的页面。
  • 我知道了。我误解了该方法的工作原理。因此,在选择要更新的记录时,应该重定向到将 id 作为 url 中的最后一个参数传递的页面。因此从数据库中预加载数据并通过 jquery 检索将不起作用。在显示表单之前,我必须通过 ajax 检查isset($home->id)。谢谢。只需将您的最后一条评论添加到您的答案中,我会将其标记为解决方案。
猜你喜欢
  • 2014-06-22
  • 2017-05-02
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2019-09-10
  • 2015-01-07
相关资源
最近更新 更多