我的所有規則都在驗證組態檔中,就像檔案建議的那樣: https ://codeigniter4.github.io/userguide/libraries/validation.html#saving-sets-of-validation-rules-to-the-config-檔案
例如:
public $userCreate = [
'first_name' => [
'label' => 'First Name',
'rules' => 'required|string|max_length[60]'
],
'last_name' => [
'label' => 'Last Name',
'rules' => 'required|string|max_length[60]',
],
'email' => [
'label' => 'Auth.email',
'rules' => 'required|max_length[254]|valid_email|is_unique[users.email]',
],
];
在我的控制器中,我可以像這樣訪問我的驗證組:
$validation = \Config\Services::validation();
$rules = $validation->getRuleGroup('userCreate');
隨著我的應用程式變得越來越大,我需要越來越多的驗證規則,所以問題是,有沒有辦法將它們組織在單獨的檔案中,而不是將它們全部放在一個組態檔中?類似于自定義規則,它們被加載到組態檔中并單獨存盤。
uj5u.com熱心網友回復:
腳步
創建用于存盤驗證規則的自定義目錄。即
app/Validation。在該目錄下為您的“用戶”規則創建一個類。IE:
app/Validation/UserRules.php
<?php
namespace App\Validation;
class UserRules
{
public function create()
{
return [
'first_name' => [
'label' => 'First Name',
'rules' => 'required|string|max_length[60]'
],
'last_name' => [
'label' => 'Last Name',
'rules' => 'required|string|max_length[60]',
],
'email' => [
'label' => 'Auth.email',
'rules' => 'required|max_length[254]|valid_email|is_unique[users.email]',
],
];
}
public function update()
{
return [
// Add 'User' update rules here.
];
}
}
- 在
\Config\Validation組態檔中,在建構式中設定相關的“用戶”驗證規則。IE:
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
// ...
class Validation extends BaseConfig
{
// --------------------------------------------------------------------
// Setup
// --------------------------------------------------------------------
public $userCreate = [];
public $userUpdate = [];
public function __construct()
{
$this->userCreate = ($userRules = new \App\Validation\UserRules())->create();
$this->userUpdate = $userRules->update();
}
// ...
}
- 在您的控制器中,您可以像往常一樣訪問驗證組。
uj5u.com熱心網友回復:
感謝@steven7mwesigwa,我想出了一個最適合我的解決方案。
首先,我在 App/Validation 檔案夾中創建了單獨的類。例如這兩個類:
應用\驗證\Auth.php
<?php
namespace App\Validation;
class Auth {
public $login = [
'email' => [
'label' => 'E-mail',
'rules' => 'required|max_length[254]|valid_email',
],
'password' => [
'label' => 'Password',
'rules' => 'required',
],
'remember' => [
'label' => 'Remember me',
'rules' => 'if_exist|permit_empty|integer',
]
];
}
應用\驗證\用戶.php
<?php
namespace App\Validation;
class User {
public $userCreate = [
'first_name' => [
'label' => 'First Name',
'rules' => 'required|string|max_length[60]',
],
'last_name' => [
'label' => 'Last Name',
'rules' => 'required|string|max_length[60]',
],
'email' => [
'label' => 'E-mail',
'rules' => 'required|max_length[254]|valid_email|is_unique[users.email]',
],
];
}
下一步是將構造方法添加到現有的驗證組態檔中:
應用\配置\驗證.php
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Validation extends BaseConfig {
...
// --------------------------------------------------------------------
// Rules
// --------------------------------------------------------------------
public function __construct() {
$ruleGroups = [
new \App\Validation\Auth(),
new \App\Validation\User(),
];
foreach ($ruleGroups as $ruleGroupClass) {
foreach ((array) $ruleGroupClass as $groupName => $rules) {
$this->{$groupName} = $rules;
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536922.html
上一篇:HTML地址驗證模式
