我想在yii2中使用动态正则表达式进行模型验证 例如,我们使用常规表达如下:
[['password'], 'match', 'pattern' => '/^[A-Za-z0-9_@%&*]{6,32}$/'],
现在我想从数据库加载模式的值。可能吗 ?如果是,请解释你的灵魂。 谢谢大家。
答案 0 :(得分:1)
尝试将regexp分配给var
$myRegExp = " '/^[A-Za-z0-9_@%&*]{6,32}$/'";
然后
[['password'], 'match', 'pattern' => $myRegExp],
您可以为商店创建适当的类并检索regexp字符串表单数据库。例如:MyDBRegExpModel
带函数getMyRegExp($ param)检索你需要的值..最后在返回和赋值为r(模型)规则之前添加你的数据库访问
在您的模型中
class MyModel extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return ......;
}
/**
* @inheritdoc
*/
public function rules()
{
$myModel = MyDBRegExpModel::getMyRegExp($param);
return [
......
[['password'], 'match', 'pattern' => $myModel->myRegExp],
......
];
}