动态正则表达式Yii2

时间:2016-01-03 06:40:49

标签: php regex yii2

我想在yii2中使用动态正则表达式进行模型验证 例如,我们使用常规表达如下:

[['password'], 'match', 'pattern' => '/^[A-Za-z0-9_@%&*]{6,32}$/'],

现在我想从数据库加载模式的值。可能吗 ?如果是,请解释你的灵魂。 谢谢大家。

1 个答案:

答案 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],
         ......
        ];
    }