2014-01-13 19 views
-2

我的表格中有幾個字段,並且都是必需的。其中一個領域是fileField。所以我想要做的是使用Transaction驗證字段的一部分,如果對於這些字段一切正常,請上傳圖像,保存在磁盤上,設置另一個字段的值並將所有字段保存在數據庫中。Yii如何驗證字段的一部分而不是整個表單?

但正如我寫的問題是,所有的領域都需要設置。當我驗證參數的一部分時,另一部分不會被設置,所以驗證將返回「false」。

P.S. 對不起,我的英語技能

+0

你能與模型規則,控制器一起添加代碼驗證只有一個屬性和字段來驗證? –

回答

3

有一些方法可以做到這一點。

首先,您可以創建一個驗證類。 例如:

class testModel extends CModel{ 
    public $test; 
    public function attributeNames() { 
     return array(
      'test'=>'Test' 
     ); 
    } 
    public function rules() { 
     return array(
      array('test','required'), 
       array('test','exist','className'=>'testClass','attributeName'=>'testAtttibute') 
     ); 
    } 
} 

然後

$test=new testModel(); 
$test->test=$_POST['ANYNAME']; 
if($test->validate()){ 
    //Do something 
} 

您還可以通過傳遞您的屬性到validate方法

$test->validate(array('test','other attr'); 
相關問題