所以我有一个小项目,在它,有可能上传横幅图像显示在主页上.所有的东西相关的数据库已经创建和创建一个横幅的选项正在工作,它创建了横幅,然后将图像存储在数据库中供以后使用。现在我正在尝试使用一个编辑功能,这样我就可以更改横幅下的描述。我在我的控制器中有一个编辑路由,它返回一个视图,我在其中编辑所说的横幅,然后它调用控制器上的更新函数。但是无论我在这里放什么,一旦我试图保存编辑并通过更新函数打开我的控制器,我总是得到缺少必需参数的错误。下面是现在的代码:
路由定义:
Route::resource('banner', 'BannerController');
我的控制器上的编辑功能:
public function edit($id)
{
return view('admin/edit-banners',['id'=>$id]);
}
update函数还没有实现,因为我总是从dd()函数开始检查是否一切正常:
public function update(Request $request, $id)
{
dd($request);
}
下面是我的编辑视图中试图调用更新路由的表单行:
<form class="card-box" action="{{ route('banner.update',[$banner]) }}">
我还在视图的开头添加了这个,以将数据库中的数据存储到变量中:
@php
use\App\Banner;
$banner = Banner::where('id','=',$id)->get();
@endphp
$banner变量包含正在编辑的横幅的所有信息,我可以通过$request变量在控制器上获得新的描述,所以我真的不知道应该在这里放什么作为参数,有什么想法吗?
3条答案
按热度按时间yfwxisqw1#
$banner
变量不是Model示例,而是Collection。调整你的控制器,将其传递给视图,而不是在视图中执行查询:
您也可以在这里使用路由模型绑定,而不是自己执行查询。
从视图中删除
@php
块。表单应该调整为使用方法
POST
并欺骗方法PUT
或PATCH
(因为更新路由是PUT
或PATCH
路由),并且应该调整对route
的调用:nwo49xxi2#
如果在函数声明中包含
$id
,那么当您调用route
帮助程序时,它希望您给予id
参数。你应该能够从
$request
变量中检索表单数据。更多信息在这里。vxf3dgd43#
下面的代码应该是错误源。$banner变量然后是一个数组,但更新函数接受对象或ID。
你应该试着通过这个来重放这个代码。。