gpt4 book ai didi

checkbox - 在 Laravel 中激活/停用多个客户端

转载 作者:行者123 更新时间:2023-12-04 12:30:10 24 4
gpt4 key购买 nike

我正在使用 Laravel 5.1

我有一个客户表。客户将创建自己的帐户并等待管理员批准。管理员可以随时激活、停用或阻止它们。我在表格底部有三个链接(如果需要,我可以更改为按钮)ACTIVE , DEACTIVATE & BLOCK .每行还有一个复选框。

现在,我想选择一个或多个客户端并更改 status 的值领域member数据库中的表。

这是我的观点代码:

<table border="1">
<tr>
<td></td>
<td>Name</td>
<td>Activity</td>
<td>main Activity</td>
<td>Legal Status</td>
<td>SIREN Code</td>
<td>Contact Firstname</td>
<td>Contact Lastname</td>
<td>Contact Email</td>
<td>Contact Telephone</td>
<td>Address</td>
<td>Town</td>
<td>Area</td>
<td>Region</td>
<td>Creation Date</td>
<td>Offer Pack Name</td>
<td>Login Password</td>
<td>Status</td>
</tr>
@foreach($clients as $client)
<tr>
<td>{!! Form::checkbox('client[]',$client->id,null) !!}</td>
<td>{{ $client->name }}</td>
<td>{{ $client->activity }}</td>
<td>{{ $client->main_activity }}</td>
<td>{{ $client->status }}</td>
<td>{{ $client->siren_code }}</td>
<td>{{ $client->contact_firstname }}</td>
<td>{{ $client->contact_lastname }}</td>
<td>{{ $client->email }}</td>
<td>{{ $client->contact_telephone }}</td>
<td>{{ $client->address }}</td>
<td>{{ $client->town }}</td>
<td>{{ $client->area }}</td>
<td>{{ $client->region }}</td>
<td>{{ $client->creation_date }}</td>
<td>{{ $client->offer_pack_name }}</td>
<td>{{ $client->password }}</td>
<td>{{ $client->status }}</td>
</tr>
@endforeach
</table>
<div class="col-md-10 text-center">
<a href="{{ action('AdminController@blockClient') }}" class="btn btn-default">BLOCK</a>
<a href="{{ action('AdminController@activateClient') }}" class="btn btn-default">ACTIVATE</a>
<a href="{{ action('AdminController@deactivateClient') }}" class="btn btn-default">ACTIVATE</a>
</div>

我的路线是:
get('blockClient','AdminController@blockClient');
get('activateClient','AdminController@activateClient');
get('activateClient','AdminController@deactivateClient');

最佳答案

这是分步解决方案,它反射(reflect)了您在评论中向我解释的内容。

前言

首先,您将拥有两个功能而不是三个,激活和停用,我认为停用与阻止用户相同。

现在我想解释一下这是如何工作的,通常当您在 Laravel 中提交表单时,您可以通过表单发布数据并在 Controller 中获取数据以进行进一步处理。在我们的例子中,我们想要更新单个或多个选择,因此我们需要将我们想要激活或停用的所有客户端 ID 传递给我们的 Controller 。

由于我们可能有多个客户端,因此我们需要像您一样将所有选定的客户端作为数组传递给 Controller ​​,这很好。

在我们的 Controller 中,我们遍历所有选定的客户端,并根据我们的按钮操作激活或停用它们。

正如您在下面的快照中看到的,当我们选择客户端 1 和 2 并单击激活时,我们将看到数据库中的表对于两个选定的客户端都更新为 1。

如何测试?

对于调试,您可以使用 dd($results);之前 $this->activateClient($results);单击激活查看提交了哪些数据。

激活和停用按钮发送相同的选定客户端,但执行来自 formAction 的不同操作方法。

enter image description here

解决方案

这导致以下解决方案:

1-首先,您应该更正路由以接受发布,因此我们可以将带有客户端 ID 的复选框传递给 Controller ​​函数:

get('admin','AdminController@index');
post('admin/action', array('uses' => 'AdminController@formAction'));

管理路径将查看所有客户列表,这仅用于演示和学习,然后您可以稍后根据您的项目结构进行更改。

2- 在您的管理 Controller 中添加了以下功能并记得添加 use App\client;在您的 AdminController 中的命名空间之后:
public function index()
{
$client = Client::all();

return view('Admin', ['client' => $client]);
}

public function formAction()
{
$results = Input::get('status');
if (Input::get('activate'))
{
$this->activateClient($results);
} elseif (Input::get('Deactivate'))
{
$this->deactivateClient($results);
}

return redirect('admin');
}

public function activateClient($client)
{
foreach ($client as $clientId)
Client::findOrNew($clientId)->update(['status' => "1"]);
}

public function deactivateClient($client)
{
foreach ($client as $clientId)
Client::findOrNew($clientId)->update(['status' => "0"]);
}

3- 创建管理 View ,调用它 admin.blade.php 来查看我们所有的客户端,我们可以激活或停用每个客户端,如果我是你,我会将数据库中客户端表中的默认值设为 ZERO (0) :
<p>Admin site | client activate and deactivate page:</p>
{!! Form::open(array('url' => 'admin/action')) !!}

<table width="800px">
<tr>
<td width="10%">Select</td>
<td width="20%">Client id</td>
<td width="20%">Client status</td>
<td width="50%">Client name</td>
</tr>

@foreach ($client as $clientOutput)
<tr>
<td>{!! Form::checkbox('status[]', $clientOutput->id, false, ['id' => $clientOutput->id]) !!}</td>
<td>{{$clientOutput->id}}</td>
<td>{{$clientOutput->status}}</td>
<td>{{$clientOutput->client}}</td>
</tr>
@endforeach

</table>

{!! Form::submit('Activate', ['name' => 'activate']) !!}
{!! Form::submit('Deactivate', ['name' => 'Deactivate']) !!}
{!! Form::close() !!}

结果

在这里,它在我的测试浏览器中的样子,您可以检查 1 个或多个客户端并立即激活或停用它们:

enter image description here

我假设您有客户端模型和迁移。

笔记:

这不是生产代码,仅用于演示。不要直接在生产环境中使用。当你在你的测试环境中测试它并且它可以工作时,而不是在你的生产环境中实现它。

关于checkbox - 在 Laravel 中激活/停用多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com