【问题标题】:Passing data from blade to controller Laravel将数据从刀片传递到控制器 Laravel
【发布时间】:2019-04-13 05:34:50
【问题描述】:

我想将一个对象从刀片文件传递到控制器文件。目的是当用户单击编辑按钮时,用户将获得一个填充了先前输入数据的表单。我在刀片文件中使用此代码:

<a href="/feestype/{{ $feesType->id }}/edit" class="btn btn-info btn-sm">Edit</a>

但是当我想从控制器的编辑方法中获取传递的对象时,我得到一个空值。我的 Controller 代码现在是这样的:

public function edit(FeesType $feesType)
{
    //
    dump($feesType->name);
    return view('feestype.edit',['feesType'=>$feesType]);
}

在这里我转储了 $feesType 对象,但我得到了一个空值。请帮助我如何解决这个问题。 提前致谢

【问题讨论】:

  • 你的路由定义是什么样的?
  • Route::resource('feestype','FeesTypesController');
  • 你解决了吗?我也有同样的问题。当我转储它是空的。

标签: php laravel controller laravel-blade


【解决方案1】:

路由模型绑定的工作方式有点不同,这里是documentation

你需要做的是这样的路线:

Route::get('feestype/{feesType}/edit', 'YourController@edit')->name('feestype.edit');

那么在你看来

<a href="{{ route('feestype.edit', $feesType) }}" class="btn btn-info btn-sm">Edit</a>

-- 编辑

使用资源文件:

Route::resource('feestype', 'YourController')

链接将与上面相同:

{{ route('feestype.edit', $feesType) }}

【讨论】:

  • 我使用了资源路由
  • use php artisan route:list 它将显示您正在使用的路线名称。然后在我上面使用的route 辅助函数中使用它,它会是一样的
  • 使用您的代码后,我在转储时收到一个新错误:“尝试获取非对象的属性 'id'”
  • 你在控制器里搞定了吗?
  • 是的。现在我的控制器代码是 'public function edit(FeesType $feesType) { // $feesType = FeesType::find($feesType->id);转储($feesType->名称); return view('feestype.edit',['feesType'=>$feesType]); }'
【解决方案2】:

现在刀片文件中的代码是

<a href="{{ route('feestype.edit',$feesType) }}" class="btn btn-info btn-sm">Edit</a>

控制器文件包含以下代码:

public function edit(FeesType $feesType)
{
    //
    $feesType = FeesType::find($feesType->id);
    dump($feesType->name);
    return view('feestype.edit',['feesType'=>$feesType]);
}

这是我的路线定义:

Route::resource('feestype','FeesTypesController');

浏览器显示以下消息:

【讨论】:

  • 你的错误信息是什么?顺便说一句,您不必再次这样做 $feesType = FeesType::find($feesType-&gt;id); 这就是模型绑定的原因,所以 $feesType 参数应该已经满了。
  • 删除该行后,它现在不显示该错误消息,但对象再次包含 null
  • 尝试使用dd 而不是dump,因为我不知道问题出在控制器方法中还是在您显示的视图中。
  • 请按照我在回答中分享的文档链接来解决您的问题,因为很难找到这样的问题。我们将度过一整天。
  • 请不要不要使用答案空间来提供其他信息或提出后续问题;答案空间专为问题的完整和独立答案保留。
【解决方案3】:

您应该将您的路线更改为:

Route::put('feestype/{id}/edit', 'YourController@edit');

对于更新和编辑,您应该使用 put not get。

请注意,对于此代码:

<a href="/feestype/{{ $feesType->id }}/edit" class="btn btn-info btn-sm">Edit</a>

首先你应该在 YourController 中压缩 $feestype 然后在刀片中使用你的代码。

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2019-12-19
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多