我在使用 Laravel 進行的專案中需要幫助。我正在處理用戶個人資料頁面。
在頁面上的用戶注冊期間,用戶可以選擇提供用戶名或跳過它。對于那件事我沒有任何疑問。但我想在用戶個人資料頁面上,如果用戶想編輯他們的詳細資訊。我希望用戶能夠在欄位的組態檔用戶名中編輯和添加他/她的用戶名,前提是他們還沒有用戶名。但是如果用戶已經有用戶名,那么他們就不能更改/編輯他們的用戶名。如果他們已經有用戶名,那么在用戶個人資料頁面上,他們的用戶名欄位應該是只讀的,同時向他們顯示他們的用戶名,而不能從他們的末端再次編輯/更改用戶名。這是我的表單用戶名欄位代碼示例。幫助將不勝感激。
先感謝您。
<div class="form-group">
<label for="username">@lang('Username')</label>
<input type="text"
class="form-control input-solid"
id="username"
placeholder="(@lang('Enter username'))"
name="username"
value="{{ $edit ? $user->username : '' }}">
uj5u.com熱心網友回復:
嘗試使用Laravel 刀片 if 陳述句指令有條件地呈現輸入欄位,如下所示:
<div class="form-group">
<label for="username">@lang('Username')</label>
@if($user->username ?? false)
<input type="text"
class="form-control input-solid"
id="username"
placeholder="(@lang('Enter username'))"
name="noname"
value="{{ $user->username }}" disabled>
@else
<input type="text"
class="form-control input-solid"
id="username"
placeholder="(@lang('Enter username'))"
name="username"
value="{{ $edit ? $user->username : '' }}">
@endif
</div>
我在disabled
這里使用是因為除了將欄位設為只讀之外,它還阻止了該欄位被提交。如果readonly="readonly"
您仍希望提交只讀欄位,請使用。另外,我更改了只讀欄位的名稱,以便即使它是由客戶端上的黑客編輯并提交,您的服務器 PHP 腳本也會簡單地忽略它而不會出錯(我假設您不希望它提交) . 如果您仍想提交,請保留正確的名稱。
我還建議在您的服務器端控制器上,有條件地驗證用戶名欄位以獲得額外保護。例如
function update(Request $request, User $user)
{
if($user->username ?? false) {
// ignore username field, validate other user input fields and update profile
} else {
// validate username field with other fields and update profile
}
}
警告
任何具有 html 知識的人都可以在客戶端瀏覽器上編輯您的 html 并提交。黑客可能會在劫持另一個用戶會話后嘗試此操作。始終使用Laravel csrf保護來防止這種情況。
uj5u.com熱心網友回復:
為了允許沒有用戶名的用戶僅用于 UI:
document.getElementById("editUserName").addEventListener("click", enableUserNameEditing);
function enableUserNameEditing(){
document.getElementById("username").disabled = false;
}
<div class="form-group">
<label for="username">username</label>
<input type="text"
class="form-control input-solid"
id="username"
placeholder="user name"
name="username"
value="john doe"
disabled
>
<button id='editUserName'>edit</button>
</div>
如果用戶已經有用戶名不更新,您應該添加驗證服務器端。
在編輯按鈕和 JS 上,您可以添加檢查
$show_edit = empty($user->username) ? true : false;
現在您可以使用此$show_edit
變數來控制用戶查看顯示username
欄位應表現的權限:
<input type="text"
class="form-control input-solid"
id="username"
placeholder="(@lang('Enter username'))"
name="username"
value="{{ $edit ? $user->username : '' }}"
{{ $show_edit === false ? "disabled" : "" }}>
@if($show_edit)
<button id='editUserName'>edit</button>
@endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453553.html
標籤:php html 拉拉维尔 形式 laravel-刀片
上一篇:從div移回表單以編輯表單htmlJavascript
下一篇:一次性強制多用戶密碼過期