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
,数据数组在那里被修改。所以现在我可以继续了。无论如何,感谢您的努力:)