Joomla postSaveHook set jform

Я занят функцией перемещения изображения, поэтому я переопределяю некоторые функции контроллера, и, к сожалению, мне нужен идентификатор элементов для имени изображения, поэтому я изменил форму save() на postSaveHook(), поскольку я не смог получить идентификатор элемента в save() но теперь я сталкиваюсь с другой проблемой, я не могу задать данные формы для недавно переименованного изображения.

Здесь код:

public function postSaveHook($model, $validData){ $item = $model->getItem(); $id = $item->get('id'); $path = JPath::clean(JPATH_SITE. DS ."images". DS ."menu_slider". DS ); $input=JFactory::getApplication()->input; $input->get('jform', NULL, NULL); $src_image = $this->moveOriginal($path,$id); $imageTest = $this->findImages($src_image); if(!empty($imageTest)){ foreach($imageTest as $images){ $this->createImageSlices($images,$src_image,$path); } }else{ echo 'all images are there'; } /*this part no longer works*/ $data = JRequest::getVar( 'jform', null, 'post', 'array' ); $data['image'] = 'images'.DS.'menu_slider'.DS.'original'.DS.$src_image; $input->post->set('jform',$data); return parent::postSaveHook($model, $validData);
}

есть все равно, я могу сохранить данные из этого? или если я вернусь назад, чтобы сохранить, как бы получить идентификатор?

Любая помощь очень ценится.

1 ответ

Я пробовал разные способы, и самым безопасным для меня способом было добавить следующий код в модель

class DPCasesModelCase extends JModelAdmin { public function save($data) { new EventHandler(JDispatcher::getInstance(), $this); return parent::save($data); }
}
class EventHandler extends JEvent { private $model = null; public function __construct(&$subject, $model) { parent::__construct($subject); $this->model = $model; } public function onContentChangeState($context, $pks, $value) { if ($context != 'com_dpcases.case' && $context != 'com_dpcases.form') { return; } if (! is_array($pks)) { $pks = array($pks); } foreach ( $pks as $pk ) { $this->dowork($this->model->getItem($pk), 'edit'); } } public function onContentAfterSave($context, $object, $isNew) { if ($context != 'com_dpcases.case' && $context != 'com_dpcases.form') { return; } $this->dowork($object, $isNew ? 'create' : 'edit'); } private function dowork($object, $action) { ... }
}

licensed under cc by-sa 3.0 with attribution.