当前位置: 首页 > 知识库问答 >
问题:

在按钮上从视图切换数据库值单击Laravel

龚弘业
2023-03-14

我使用Laravel框架作为后端API,在前端使用一些blade PHP文件,特别是用于/admin路由中的身份验证和管理面板。在/admin中,我将显示所有注册用户的列表以及旁边的按钮。(此页面仅对管理员列中的值设置为true的用户可见)。我想切换用户的管理员状态,通过单击用户名旁边的按钮来升级或降级用户。为此,我尝试使用带有get的表单提交方法。我在UserController中定义了如下方法:

public function setAdmin($id) {
    $user = User::find($id);
    $user->admin = !$user->admin;
    if($user->save()) {
        echo "Changed";
    }
    else {
        echo "Could not be changed";
    }
}

我想通过单击按钮从视图调用此方法。

我尝试使用Form通过指定操作来发送请求,但它给出了一个错误,说传递的值小于预期的参数数。

{!! Form::open(['action' => ['UserController@setAdmin', $user->id], 'method' => 'POST']) !!}
{{  Form::submit('Submit', ['class' => 'btn btn-primary']) }}
{!! Form::close() !!}

我已明确设置了一条路径来调用此操作

Route::post('/admin/users/setAdmin', 'UserController@setAdmin')

虽然我不确定是否必须为此操作设置显式路由,或者是否可以在不定义路由的情况下直接从视图调用控制器函数

我已遍历用户模型以显示所有用户:

@if(count($users) > 0) 
    @foreach($users as $user)
        <div class="card">
            {{ $user }}
        </div>


        {!! Form::open(['action' => ['UserController@setAdmin', $user->id], 'method' => 'POST']) !!}
        {{  Form::submit('Submit', ['class' => 'btn btn-primary']) }}
        {!! Form::close() !!}
    @endforeach
@else 
    <h2>No users found!</h2>
@endif

编辑:添加了刀片文件的foreach部分。我还修改了Form::open()参数的“action”部分,这是一个错误类型,参数错误仍然存在。

有人能解释一下这是怎么做到的吗?

共有1个答案

宰父宾实
2023-03-14

您正试图将参数传递给路由,但在其声明中没有任何参数。您需要将其添加到路由路径中:

Route::post('/admin/users/setAdmin/{id}', 'UserController@setAdmin')

如果您不希望有这样的URL,则应向包含您的ID的表单中添加隐藏输入:

{!! Form::open(['action' => ['UserController@setAdmin'], 'method' => 'POST']) !!}

{{ Form::hidden('id', $user->id) }}
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}

{!! Form::close() !!}

在控制器的方法中:

use Request;

/* ... */

public function setAdmin(Request $request) {
    $user = User::find($request->id);

    /* ... */
}
 类似资料:
  • 我正在使用RecycerView构建一个切换按钮列表(如numpad),我希望实现: 当用户通过单击某个按钮“打开”该按钮时,将“关闭”所有其他按钮 我尝试在视图holder类中添加,并调用,这样就可以调用,然后更改按钮的状态。 维埃霍尔德 我的adpater类中的onBindViewHolder()

  • 我试图更新下载按钮点击数据库列。似乎很容易,但当我点击按钮数据库中的计数器不更新。 我不确定这是否是最佳和正确的方法,但这是我到目前为止所做的。 一个输入字段,用户从API中提取图像 当图像加载有显示按钮下载和用户可以下载它 另外,当用户搜索图像时,我会将搜索的内容保存在数据库中。这是我的控制器函数,用于将图像保存在数据库中的搜索字符串中。这很好用 这是下载时更新按钮单击的功能 视图中的按钮 路线

  • 我的菜单显示向下,但然后水平。 我希望每一个导航项目都显示下来,在彼此的上面。 现场测试站点URL:ministerios-elim.herokuapp.com CodePen:(无法使菜单在单击CodePen时出现)。 https://codepen.io/ogonzales/pen/abnqxlg 更新2: 更新3:

  • 我有一个名为的变量。是一个字符串,可以是“true”或“false”。 默认设置为“false”。 单击按钮时,我要切换值或。因此,在第一次单击按钮时,将为“true”(因为默认情况下它是false),然后,再次单击时,将更改为“false”,依此类推。 我试过(按照这个答案): 但没有成功。 下面是一个演示: null null

  • 问题内容: 我正在尝试使用Apple的 SwiftUI 制作一个应用程序,我需要有两个按钮在同一行中显示两个不同的视图。 我使用 Xcode beta 7 和 MacOS Catalina beta 7 。我尝试添加一个表示视图的视图,但是无法单击它,而当我尝试在外部进行简单单击并单击该视图时,该视图没有出现。我也尝试过添加一个内部,但是它也不起作用。单击时也无法添加,视图仍然不会出现 我希望该视

  • 问题内容: 我正在尝试制作一个通过JToggleButton激活的弹出面板。我希望在选择ToggleButton时将JPanel添加到另一个Jpanel上,而在取消选择ToggleButton时将其隐藏。 我已经声明了JToggleButton并使用了ItemListener。但是发生的事情是,当我选择ToggleButton时,如果我取消选择并再次选择它,则会创建一个面板,然后再次添加另一个JP