如何更改数据库中的布尔值调用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中的函数?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何切换核心数据中的所有布尔值

SQL - 基于记录中的布尔值更改查询输出

如何从 Javascript 中的连续函数返回布尔值?

在 React Native 中,有没有办法根据数据库中的布尔值更改按钮的颜色?

Python Pandas - 数据帧列中的查询和布尔值

如何在 Flutter 中的某些布尔条件下启用按钮?