修改 dataProvider 数组中 CFormModel 的值

问题描述 投票:0回答:1

所以另一个问题...我必须格式化通过 CFormModel 设置的数字,但问题是,如果我 var_dump dataProvider,属性不会设置,但它们会出现在网站上。另外,如果我调用 $dataProvider->value (其中 value 作为 CFormModel 扩展类中的公共参数存在),Yii 表示该值未设置(证明 var_dump() 是正确的)

  1. 怎么会?
  2. 如何通过number_format()或Yii相关方法修改号码?

    CActiveDataProvider Object
    (
      [modelClass] => VouchersTransactions
      [model] => VouchersTransactions Object
      (
        [_new:CActiveRecord:private] => 
        [_attributes:CActiveRecord:private] => Array
            (
            )
    
        [_related:CActiveRecord:private] => Array
            (
            )
    
        [_c:CActiveRecord:private] => 
        [_pk:CActiveRecord:private] => 
        [_alias:CActiveRecord:private] => t
        [_errors:CModel:private] => Array
            (
            )
    
        [_validators:CModel:private] => 
        [_scenario:CModel:private] => 
        [_e:CComponent:private] => 
        [_m:CComponent:private] => 
    )
    
     [keyAttribute] => 
     [_criteria:CActiveDataProvider:private] => CDbCriteria Object
    (
        [select] => *
        [distinct] => 
        [condition] => user_id = 141
        [params] => Array
            (
            )
    
        [limit] => -1
        [offset] => -1
        [order] => 
        [group] => 
        [join] => 
        [having] => 
        [with] => 
        [alias] => 
        [together] => 
        [index] => 
        [scopes] => 
        [_e:CComponent:private] => 
        [_m:CComponent:private] => 
    )
    
    [_countCriteria:CActiveDataProvider:private] => 
    [_id:CDataProvider:private] => VouchersTransactions
    [_data:CDataProvider:private] => 
    [_keys:CDataProvider:private] => 
    [_totalItemCount:CDataProvider:private] => 
    [_sort:CDataProvider:private] => 
    [_pagination:CDataProvider:private] => 
    [_e:CComponent:private] => 
    [_m:CComponent:private] => 
    )
    

这是打印的dataProvider

      $dataProvider = new CActiveDataProvider('VouchersTransactions', array(
        'criteria' => array(
            'condition' => 'user_id = ' . Yii::app()->user->id,
        ),
      ));

这是 dataProvider,其中 VoucherTransactions 是不同模块内的模型

L.E.

    0 => VouchersTransactions#1
    (
      [CActiveRecord:_new] => false
      [CActiveRecord:_attributes] => array
    (
        'id' => '48'
        'user_id' => '141'
        'number_vouchers' => '1'
        'voucher_value' => '0.0100'
        'date_created' => '2014-07-11 10:06:22'
    )
    [CActiveRecord:_related] => array()
    [CActiveRecord:_c] => null
    [CActiveRecord:_pk] => '48'
    [CActiveRecord:_alias] => 't'
    [CModel:_errors] => array()
    [CModel:_validators] => null
    [CModel:_scenario] => 'update'
    [CComponent:_e] => null
    [CComponent:_m] => null
    )
    1 => VouchersTransactions#2
    (
      [CActiveRecord:_new] => false
      [CActiveRecord:_attributes] => array
    (
        'id' => '52'
        'user_id' => '141'
        'number_vouchers' => '1'
        'voucher_value' => '10.0000'
        'date_created' => '2014-07-11 10:15:06'
    )
    [CActiveRecord:_related] => array()
    [CActiveRecord:_c] => null
    [CActiveRecord:_pk] => '52'
    [CActiveRecord:_alias] => 't'
    [CModel:_errors] => array()
    [CModel:_validators] => null
    [CModel:_scenario] => 'update'
    [CComponent:_e] => null
    [CComponent:_m] => null
)

这就是我转储 $dataProvider->data 时得到的结果,但我无法更改那里的信息

php yii
1个回答
0
投票

所以我使用模型中的 Yii afterSearch() 方法解决了这个问题。当您必须修改这样的值时使用的好方法。

  public function afterSave() {
      //do modification here
      return parent::afterSave();
  }
© www.soinside.com 2019 - 2024. All rights reserved.