亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel - 如何使用表單將變量從視圖傳遞到控制器

Laravel - 如何使用表單將變量從視圖傳遞到控制器

PHP
躍然一笑 2023-08-06 10:34:28
我正在使用 Laravel 7 構建一個請求系統。在索引頁面中,有一個供用戶填寫的表單和一個提交按鈕。如果單擊該按鈕,表格中的數據將通過電子郵件發送給主管。主管收到的電子郵件、所有用戶輸入數據將與&ldquo;批準&rdquo;按鈕和&ldquo;拒絕&rdquo;按鈕一起列出。如果單擊&ldquo;批準&rdquo;按鈕,用戶輸入的數據將存儲在數據庫中。所有用戶輸入數據都存儲在電子郵件模板視圖中$data并可以在電子郵件模板視圖中訪問。那么,在電子郵件模板中,如何將用戶輸入數據傳遞給Auth::user()->id控制器以便開始存儲過程?是否可以將刀片變量從<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 methodspublic function sendSupervisor()? ? {? ? ? ? $data = request();? ? ? ? Mail::to('[email protected]')->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>
查看完整描述

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 并不理想。您應該生成某種令牌來解析用戶。


查看完整回答
反對 回復 2023-08-06
?
慕妹3146593

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('[email protected]')->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]);

當然我在這里使用的名字很糟糕,我只是想解釋一下我的想法


查看完整回答
反對 回復 2023-08-06
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

在表單中添加隱藏輸入字段,其值為用戶數據。但我認為您的系統有更好的設計,我將在單獨的答案中進行解釋。



查看完整回答
反對 回復 2023-08-06
  • 3 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號