如何在Yii中匹配字符串?

问题描述:

我被困在这..我们说,我有string1 &字符串2(在同一模型中),其中string1有7位数字和string2的2位数字。 然后我想匹配它们在一起,其中string1的开始数字中的2必须与string2相同。我想在这个模型代码>>如何在Yii中匹配字符串?

public function CekDigit($attribute,$params) 
{ 

$attribute=substr($this->string1,0,-7); 
$params=$this->string2; 

if($this->$attribute==$params['subject']) 
{ 
$this->addError(‘Error’, $params['message']); 
return false; 
} 
} 

而在规则,我把这个代码>>

<?php 

array('string1','cekdigit','message'=>'the code is unmatched','subject'), 

?> 

之后我做了代码,我试图填补$字符串1与23xxxxxxx ,但我得到一个错误,即CException:属性model.23未定义。任何人都可以帮我吗?非常感谢

+0

可以打印$ _ POST内CekDigit()和复制粘贴的结果。 – rajmohan 2012-03-02 04:58:21

+1

我不认为你知道那里发生了什么...请仔细阅读这个 - http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/ – 2012-03-02 05:49:32

+0

看起来像你的'在某个阶段重新调用'$ string1'作为'$$ string1'。另外,看起来你将'$ params'设置为一个字符串('$ params = $ this-> string2'),但是你试图与一个数组值相比较('$ params ['subject']' ) – Avanche 2012-03-02 09:43:47

使用你的榜样行$attribute=substr($this->string1,0,-7); 将$属性设置为23,所以线if($this->$attribute==$params['subject']) 将检查$params['subject']$this->23

尝试

public function CekDigit($attribute, $params) 
{ 
    $string1 = substr($this->$attribute, 0, 2); 
    if ($string1 == $this->string2) 
     { 
     $this->addError(‘Error’, $params['message']); 
     return false; 
    } 
}