Cakephp 在行为don';无法正确保存数据

Cakephp 在行为don';无法正确保存数据,cakephp,before-save,Cakephp,Before Save,控制器: $data = array( 'ContentI18n' => array( 0 => array( 'title' => 'first', 'author' => 'first',

控制器:

    $data =
            array(
                'ContentI18n' =>
                array(
                    0 =>
                    array(
                        'title' => 'first',
                        'author' => 'first',
                        'source' => 'sgfsdfrst',
                        'lang' => 'fa',
                    ),
                ),
                'Content' =>
                array(
                    'publish' => 1,
                    'type' => 3,
                    'pages' => 8,
                    'volume' => 7,
                    'modified' => '2012-05-27 14:16:37',
                    'created' => '2012-05-27 14:16:37',
                    'lang' => 'fa',
                ),
    );
$this->Content->create();
$this->Content->saveAll($data);
型号:

public $hasMany = array(
    'ContentI18n' => array(
        'className' => 'ContentI18n',
    )
);
在行为中保存函数之前:

public function beforeSave(Model $model) {
    // Define the new Translate model
    App::uses($model->name . 'I18n', 'Model');
    $varI18n = $model->name . 'I18n';
    $modelI18n = new $varI18n;


    foreach ($model->data[$model->name] as $key => $data) {
        if (!in_array($key, $this->setting))
            $modelData[$model->name][$key] = $data;
        else
            $modelData[$model->name . 'I18n'][0][$key] = $data;
    }
    $modelData[$model->name . 'I18n'][0]['lang'] = $model->locale;
    $modelData[$model->name]['lang'] = $model->locale;
    $model->data = $modelData;

    //pr($model->data);
    return TRUE;
}

当直接保存时,一切似乎都是因为它是用
saveAll
保存的。但是当我在behavior中使用相同的数据结构时,没有任何错误。

我发现beforeSave回调不会由saveAll触发。为了在saveAll之前执行一些代码,我们必须重写模型中的saveAll函数

public function saveAll($data, $options = array()) {
            /*
            your code you want execute before saving...
            */
    parent::saveAll($data, $options);
}
对于其他保存方法,如saveMany、saveAssociated、,。。。在它们触发之前保存触发器