首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joomla postSaveHook集jform

Joomla postSaveHook集jform
EN

Stack Overflow用户
提问于 2013-10-16 14:38:01
回答 1查看 1.4K关注 0票数 0

我忙于一个图像移动函数,因此我重写了一些控制器函数,而且我不偶然地要求图像名的项id,所以我将从save()更改为postSaveHook(),因为我无法在save()中获得项id,但现在我面临另一个问题,我无法将数据设置为新重命名的图像。

下面是代码:

代码语言:javascript
复制
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?

任何帮助都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 14:37:53

我尝试了不同的方法,对我来说最安全的方法是在模型中添加以下代码

代码语言:javascript
复制
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) {
        ...
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19406351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档