Cakephp 无法在插件行为中编辑数据数组

Cakephp 无法在插件行为中编辑数据数组,cakephp,plugins,behavior,Cakephp,Plugins,Behavior,我的插件行为是读取数据数组,做它应该做的一切,但我的控制器中的数组没有发生任何变化,它保持不变 控制器代码: if($this->request->is('post') || $this->request->is('put')) { $this->request->data['Task']['id'] = $task['Task']['id']; if($this->Task->saveAssociated($this->re

我的插件行为是读取数据数组,做它应该做的一切,但我的控制器中的数组没有发生任何变化,它保持不变

控制器代码:

if($this->request->is('post') || $this->request->is('put')) {
    $this->request->data['Task']['id'] = $task['Task']['id'];
    if($this->Task->saveAssociated($this->request->data, array('deep' => true))) {
        debug($this->request->data);exit;
        $this->redirect(array('action' => 'view', $slug));
    }
    $this->setFlash(__('TASK_EDIT_FAILED'));
    $this->redirect(array('action' => 'view', $slug));
}
行为准则:

public function beforeSave (Model $Model, $options = array()) {
    App::import('Model', 'Upload.Attachment');
    $this->Attachment = new Attachment();
    if(isset($Model->data[$Model->alias]['Attachment'])) {
        foreach($Model->data[$Model->alias]['Attachment'] as $key => $attachment) {
            $data['Attachment'] = $attachment;
            $data['Options'] = array(
                'model' => $Model->alias,
                'root' => WWW_ROOT . 'files',
            );
            $this->Attachment->create();
            $this->Attachment->save($data);
            $Model->data['Attachment']['Attachment'][$key] = $this->Attachment->getInsertID();
            unset($Model->data[$Model->alias]['Attachment'][$key]);
        }
    }
    return true;
}
编辑


事实证明,TaskController中的
$this->request->data
在保存后不会更改,而任务模型中的
$this->data
已更改(我在Task->afterSave()函数中调试了
$this->data

如果您在任务模型中编写了行为,则无需执行此操作。所以去掉这个

 $actsAs = array('Upload.Attachment');
也不是这个

if($this->Task->saveAssociated($this->request->data, array('deep' => true))) {
用这个

if($this->Task->save($this->request->data, false)) {
如果您使用的是cakephp 2.x而不是

App::import('Model', 'Upload.Attachment');
使用此选项可在模型中加载其他模型

App::uses('Upload', 'Model');

您应该使用
$this->Attachment=ClassRegistry::init('Attachment')
加载模型-无需应用程序::导入等。感谢您的提示,但这并不能解决我的问题。:)任务在任务类中,我设置了
$actsAs=array('Upload.Attachment')如果仍然不起作用,请告诉我。1。我需要验证,我需要递归保存。无论如何,我试过了,控制器的数据数组仍然没有改变。2.该行为是上传插件的一部分,它不仅适用于任务模型。3.按照mark的建议,我使用
$this->Attachment=ClassRegistry::init('Upload.Attachment')现在。这与问题无关,因为依恋模型运行良好。我的问题是行为不更改我的数据数组。是否在应用程序控制器中加载了RequestHandler组件?-尝试将其加载到Taskcontroller中让我知道好的,不要删除RequestHandler,以确保行为变量在模型和控制器中四舍五入。您是否加载了App::uses('ModelBehavior','Model');除了你的行为?这些都不管用,抱歉。。。但是,控制器中的
$this->request->data
与模型中的
$this->data
不同。。。我在任务模型afterSave函数中调试了
$this->data
,数据数组在那里被修改。所以现在我可以继续了。无论如何,感谢您的努力:)