3 回答
TA贡献1863条经验 获得超2个赞
电子邮件不是浏览器,几乎在所有情况下<form>
标签都不起作用。您无法从电子邮件中检索用户输入,但是在您的情况下,如果电子邮件中有两个按钮,并且该电子邮件正在发送给系统中存在的用户,并且您收到的输入是“接受”或“拒绝” ' 根据他们点击的按钮,这是可行的。
您可以拥有两条可公开访问的路由,并构建两个带有 href 的“按钮”来执行这些操作。喜欢:
Route::get('email/accept/{user_id}', 'EmailController@accept'); Route::get('email/reject/{user_id}', 'EmailController@reject');
然后链接到您的电子邮件寺庙中的这些路线,例如:
<a href="{{ action('EmailController@accept', ['user_id' => $user->id ]) }}">Accept</a> <a href="{{ action('EmailController@reject', ['user_id' => $user->id ]) }}">Reject</a>
然后在该控制器中,您可以根据这些方法中的 id 解析用户,并且可以执行您想要的任何逻辑。
请注意:由于这些链接需要公开访问,因此使用 id 并不理想。您应该生成某种令牌来解析用户。
TA贡献1820条经验 获得超9个赞
更好的方法:
最好在用户发布请求后使用名为“状态”的列标志保存用户请求,其中包含(“待处理”、“已批准”、“已拒绝”),然后向主管发送电子邮件
索引刀片
<form action="/sendRequest" method="post">
<input type="text">
<input type="text">
<button type="submit">Send</button>
</form>
网页.php
Route::get('/sendRequest', 'MyController@sendRequest)
我的控制器.php
public function sendRequest(Request $request){
// UserRequest table should has column 'status' with default value 'Pending'
$userRequest = UserRequest::create($request->all());
Mail::to('supervisor@abc.com')->send(new ApprovalMail($userRequest));
return redirect('/');
}
电子邮件模板应仅通知主管对请求采取行动,并使用“采取行动”按钮在浏览器中打开一个页面供主管采取行动。
电子邮件模板.blade
<!-- User data displayed for example in a table -->
<a href={{ route('takeAction', $userRequest->id) }}>
<button> Take Action <button>
</a>
网页.php
Route::get('/take-action/{requestId}', 'SupervisorController@takeAction')
->name('taleAction');
SupervisorController.php
public function takeAction($requestId){
$userRequest = UserRequest::find($requestId);
return view('take-action', [$userRequest]);
}
采取行动.blade
<-- User data displayed for example in a table -->
<form method='POST' action={{ route('takeActionPost', $userRequest->id) }}>
@csrf
<input type='hidden' name='action' value='Approved'>
<button type='submit'>Approve</button>
</form>
<form method='POST' action={{ route('takeActionPost', $userRequest->id) }}>
@csrf
<input type='hidden' name='action' value='Rejected'>
<button type='submit'>Rejected</button>
</form>
网页.php
Route::post('/take-action/{requestId}', 'SupervisorController@takeActionPost')
->name('takaActionPost');
SupervisorController.php
public function takeActionPost(Request $request, $requestId){
$userRequest = UserRequest::find($requestId);
$userRequest->update(['status', $request->action]);
}
当然我在这里使用的名字很糟糕,我只是想解释一下我的想法
- 3 回答
- 0 关注
- 66 浏览
添加回答
举报