2012-03-02 8 views
0

私はこれに執着しました..私はstring1 &文字列2(同じモデルで)、string1は7桁とstring2の2桁を持っているとしましょう。 それから私はそれらを一緒に一致させたいと思います。ここで、string1の開始桁の2つはstring2と同じでなければなりません。ルールでは、私はこのコードを配置しながら、私はそのコードを作った後、私は>>モデルにYiiの文字列はどのように一致させることができますか?

<?php 

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

?> 

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; 
} 
} 

をこのコードを試してみました、私は23xxxxxxx で$ string1のを埋めるために試みたが、私が得ましたエラー:CException:プロパティmodel.23が定義されていません。誰か助けてくれますか?おかげでたくさんの

+0

あなたはCekDigit()内の$ _POSTを印刷して、結果をコピー&ペーストすることができます試してみてください。 – rajmohan

+1

私はあなたが何が起こっているのか分かっていないと思う...これを完全に読んでください - http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/ –

+0

はあなたの 'ある段階で '$ string1'を' $$ string1'と呼びます。また、 '$ params'を文字列(' $ params = $ this-> string2')に設定しているようですが、次に配列の値と比較しようとしています( '$ params ['subject']' ) – Avanche

答えて

0

23に$属性を設定しますあなたの例行$attribute=substr($this->string1,0,-7); を使用して、だから、$this->23に対して$params['subject']をチェックしますラインif($this->$attribute==$params['subject'])

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