如何更改数据库中的布尔值调用href中的函数?
Posted
技术标签:
【中文标题】如何更改数据库中的布尔值调用href中的函数?【英文标题】:How to change the boolean in DB calling a function in href? 【发布时间】:2021-11-13 12:53:37 【问题描述】:在 Laravel 上下文中,我有这个消息页面,其中包含属于特定用户的所有消息。最初所有消息都没有被读取,所以我放了一个按钮来更改 DB 中的布尔值(从 0 到 1),最后显示消息。
我正在这样做:
景色
@if ($message->readed != 0)
<p class="card-text message text-left"> $message->message </p>
@else
<form method="POST" action="/message/read">
@csrf
@method('PATCH')
<input type="hidden" name="message" value=" $message->id "/>
<button class="btn btn-info text-white" type="submit">
Leggi
</button>
</form>
@endif
web.php 中的路由
Route::patch('message/read', 'MusicianController@readMessage');
功能
public function readMessage(Request $request)
$message = Message::where('id', $request->id)->first();
$message->readed = 1;
$message->update();
return redirect()->back()->with('message', 'message updated');
但它不起作用,只要我单击按钮显示消息(甚至更改 DB 值),我就会收到此错误:此路由不支持 PATCH 方法。支持的方法:GET、HEAD。
即使我在路由中指定了补丁方法,甚至在 @method('PATCH') 的表单中也指定了补丁方法
有人可以帮我理解怎么回事吗?
【问题讨论】:
【参考方案1】:the main answer
你的路线是:
Route::patch('message/read', 'MusicianController@readMessage');
将您的路线替换为用于所有 CRUD 操作的以下路线:
Route::resource('message/read', 'MusicianController');
如果您使用 ajax 提交数据,请将您的类型和 url 替换为以下内容:
type: "patch",
url: "url('message/read')",
如果您不使用 ajax,请使用以下内容:
<form method="POST" action="url('message/read"')">
csrf_field()
method_field('PATCH')
</form>
更新:在 5.6 版之后,您可以在任何刀片文件中将这些语法用于上述功能:
<form method="POST" action="url('message/read"')">
@csrf
@method('PATCH')
</form>
【讨论】:
以上是关于如何更改数据库中的布尔值调用href中的函数?的主要内容,如果未能解决你的问题,请参考以下文章