Php Joomla postSaveHook集合jform
我正忙于图像移动函数,因此我覆盖了一些控制器函数,不幸的是,我需要图像名称的项目id,因此我将表单save()更改为postSaveHook(),因为我无法在save()中获取项目id,但现在我面临另一个问题,我无法将表单数据设置为新重命名的图像 代码如下:Php Joomla postSaveHook集合jform,php,oop,joomla,joomla3.0,joomla-component,Php,Oop,Joomla,Joomla3.0,Joomla Component,我正忙于图像移动函数,因此我覆盖了一些控制器函数,不幸的是,我需要图像名称的项目id,因此我将表单save()更改为postSaveHook(),因为我无法在save()中获取项目id,但现在我面临另一个问题,我无法将表单数据设置为新重命名的图像 代码如下: public function postSaveHook($model, $validData){ $item = $model->getItem(); $id = $item->get('id');
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);
}
是否有其他方法可以保存此文件中的数据?或者,如果我恢复保存,我将如何获取id
非常感谢您的帮助 我尝试了不同的方法,对我来说最安全的方法是在模型中添加以下代码
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) {
...
}
}