vitalyspirin / yii2-simpleactiverecord
Yii2 ActiveRecord 的扩展,增加了自动生成的验证器
Requires
- php: >=5.4.0
- yidas/yii2-composer-bower-skip: ~2.0.0
- yiisoft/yii2: >=2.0.5
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0.0
- phpunit/phpunit: 4.8.*
- yiisoft/yii2-debug: ~2.0.0
- yiisoft/yii2-gii: ~2.0
This package is not auto-updated.
Last update: 2024-09-13 22:38:33 UTC
README
Yii 2 ActiveRecord 的扩展,包含自动生成的验证器。
快速开始
要安装它,您可以下载 zip 文件或使用 composer
composer require vitalyspirin/yii2-simpleactiverecord
在代码中使用它
use vitalyspirin\yii2\simpleactiverecord\SimpleActiveRecord; class T1 extends SimpleActiveRecord { }
无需覆盖 rules() 函数来指定验证器。验证器将由类构造函数根据表模式自动添加。然而,在当前版本中,基于外键的关系将不会添加。
创建此类实例有两种方式。SimpleActiveRecord 构造函数接受一个布尔参数:$maximumValidation。如果为 'false',则仅添加由 Gii 生成的验证器。在上面的示例中,它看起来像这样
$t1 = new T1(false);
如果传递 'true'(这是默认值),则将添加最大验证功能。它包括整数范围、枚举范围、时间模式等。当然,您可以查看这些验证器
$t1 = new T1(); var_dump($t1->rules());
如果表模式更改,验证器将自动调整。
示例
假设我们有以下 SQL 模式
CREATE TABLE person ( person_id INT PRIMARY KEY AUTO_INCREMENT, person_firstname VARCHAR(35) NOT NULL, person_lastname VARCHAR(35) NOT NULL, person_gender ENUM('male', 'female'), person_dob DATE NULL, person_salary DECIMAL UNSIGNED );
然后,如果我们运行以下代码
use vitalyspirin\yii2\simpleactiverecord\SimpleActiveRecord; class Person extends SimpleActiveRecord { // totally empty class } $person = new Person(false /*Gii style validation only*/ ); var_dump($person->rules());
我们将得到以下输出
array (size=5)
0 =>
array (size=2)
0 =>
array (size=2)
0 => string 'person_firstname' (length=16)
1 => string 'person_lastname' (length=15)
1 => string 'required' (length=8)
1 =>
array (size=2)
0 =>
array (size=1)
0 => string 'person_salary' (length=13)
1 => string 'number' (length=6)
2 =>
array (size=2)
0 =>
array (size=1)
0 => string 'person_dob' (length=10)
1 => string 'safe' (length=4)
3 =>
array (size=3)
0 =>
array (size=2)
0 => string 'person_firstname' (length=16)
1 => string 'person_lastname' (length=15)
1 => string 'string' (length=6)
'max' => int 35
4 =>
array (size=2)
0 =>
array (size=1)
0 => string 'person_gender' (length=13)
1 => string 'string' (length=6)
上述验证器与 Yii 的 Gii 模块生成的验证器相同。如果没有提供 false 参数调用类构造函数,还可以生成额外的验证器
$person = new Person(); var_dump($person->rules());
在这种情况下,输出将如下(注意 'person_gender'、'person_dob' 和 'person_salary' 字段)
array (size=5)
0 =>
array (size=2)
0 =>
array (size=2)
0 => string 'person_firstname' (length=16)
1 => string 'person_lastname' (length=15)
1 => string 'required' (length=8)
1 =>
array (size=3)
0 =>
array (size=1)
0 => string 'person_gender' (length=13)
1 => string 'in' (length=2)
'range' =>
array (size=2)
0 => string 'male' (length=4)
1 => string 'female' (length=6)
2 =>
array (size=5)
0 =>
array (size=1)
0 => string 'person_dob' (length=10)
1 => string 'date' (length=4)
'format' => string 'yyyy-MM-dd' (length=10)
'min' => string '1000-01-01' (length=10)
'max' => string '9999-12-31' (length=10)
3 =>
array (size=3)
0 =>
array (size=1)
0 => string 'person_salary' (length=13)
1 => string 'number' (length=6)
'min' => int 0
4 =>
array (size=3)
0 =>
array (size=2)
0 => string 'person_firstname' (length=16)
1 => string 'person_lastname' (length=15)
1 => string 'string' (length=6)
'max' => int 35
您也可以向构造函数传递属性
$person = new Person(['person_firstname' => 'John', 'person_lastname' => 'Smith']); echo $person->person_firstname;
在上面的示例中,默认选择最大验证。您可以显式指定验证级别(以下示例中的 Gii 风格验证)
$person = new Person(false, ['person_firstname' => 'John', 'person_lastname' => 'Smith']); echo $person->person_firstname;
其他特性
此 Active Record 扩展还具有 getEnumValues() 函数,用于显示表列的枚举值。以下代码
$person = new Person(); var_dump($person->getEnumValues());
将返回
array (size=1)
'person_gender' =>
array (size=2)
0 => string 'male' (length=4)
1 => string 'female' (length=6)
您还可以在 SimpleActiveRecordTest.php 中查看测试,以获取简单示例。