我只想對非空的輸入欄位應用驗證規則(不需要)
例如,如果我提交了一個表單并且輸入為空,我得到一個驗證錯誤“Instagram 鏈接必須是有效的 url。”,但是,我不需要它,如果輸入不為空,我想應用規則“有效網址”
我們該如何解決?
if (!$this->validate([
'instagram' => [
'rules' => 'valid_url',
'errors' => [
'valid_url' => 'Instagram Link must be valid url.',
],
],
])){
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
我嘗試使用 permit_link 規則,但如果我提交它(使用像“mylink”這樣的輸入值(它不是有效的 URL)),它會接受它,但它不應該接受。
請檢查以下影像和代碼: 單擊編輯按鈕后的表單 HTML結果
<?= form_open('/settings/edit/1', ['id' => 'setting-form']); ?>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<?= form_label('Instagram'); ?>
<?= form_input(['name' => 'instagram', 'class' => 'form-control', 'id' => 'instagram', 'placeholder' => 'Enter instagram link', 'value' => old('instagram', $setting->instagram)]); ?>
</div>
</div>
</div>
<button type="submit" class="btn btn-dark">Edit</button>
<?= form_close(); ?>
public function edit($id)
{
if (!$this->validate([
'instagram' => [
'rules' => 'permit_empty|valid_url',
'errors' => [
'valid_url' => 'Instagram Link must be valid url.',
],
],
])) {
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
die('submitted');
}
它應該顯示“Instagram Link must be valid url”而不是“submitted”,
uj5u.com熱心網友回復:
第一的
像這樣使用單獨的變數 $rules:
$rules = ['data' => 'require']
然后
檢查是否$this->request->getVar("instagram");為空/是否為真 等。然后將其設定在$rules
最后
做這樣的事情:
$rules = ['extra_data' => 'require'];
if(!empty($this->request->getVar("instagram"))
$rules["instagram"] = "valid_url";
if ($this->validate(rules){
//do something ...
}else {
//do something ...
}
uj5u.com熱心網友回復:
我剛剛注意到以下示例:“mylink”、“mylink.com”、“https://www.mylink.com”將認為 Codeigniter 中的規則valid_url正確(無錯誤),而:“https::/ /www.mylink.com", "mylink@" 將應用驗證并應用錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/463164.html
