php - Laravel - 如何使用表单将变量从视图传递到控制器
问题描述
我正在使用 Laravel 7 构建一个请求系统。在索引页面中,有一个供用户填写的表单和一个提交按钮。如果单击该按钮,表格中的数据将通过电子邮件发送给主管。主管收到的电子邮件,所有用户输入数据将与“批准”按钮和“拒绝”按钮一起列出。如果单击“批准”按钮,则用户输入的数据将存储在数据库中。所有用户输入数据都存储$data
在电子邮件模板视图中并可在其中访问。那么,在电子邮件模板中,我如何将用户输入数据传递Auth::user()->id
给控制器,以便开始存储过程?我读了这篇文章,它看起来对我有用,但它正在使用<a>
进行重定向以触发控制器。是否可以将刀片变量从<form>
电子邮件模板视图中传递给控制器,以便我可以使用<button>
?
更新:
index.blade.php:
<form action="/sendSupervisor" method="post">
<input type="text">
<input type="text">
<button type="submit">Send</button>
</form>
网页.php:
Route::post('/sendSupervisor', 'CatViewController@sendSupervisor')->middleware('auth')->middleware('verified');
CatViewController.php:
// one of the methods
public function sendSupervisor()
{
$data = request();
Mail::to('supervisor@abc.com')->send(new ApprovalMail($data));
return redirect('/');
}
批准.blade.php:
<!-- Email Template -->
User Input: {{ $data->name }}
<form action="/approve">
<button>Approve</button>
</form>
<form action="/reject">
<button>Reject</button>
</form>
解决方案
电子邮件不是浏览器,几乎在所有情况下,<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 并不理想。您应该生成某种令牌来解析用户。
推荐阅读
- c# - 使用 c# 在 XML 中的特定位置附加
- android - 奥利奥通知频道听起来不工作
- html - 在实时预览时单击浏览器中的元素时突出显示 HTML 代码
- entity-framework - 如何在实体框架中编写通用查询?
- angularjs - 我如何以角度动态化我的 Flash 消息。消息必须来自 API 响应
- python - 根据公共键对熊猫数据框进行分组
- laravel - 将策略与 apiResource 路由一起使用
- php - 目前使用 CodeIgniter 框架我有一个错误
- ios - 核心数据缺少模型版本?
- swagger - 在 swagger UI 上获取错误按钮,即 schemaValidationMessages