首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Socialengine - Widget文件上传

Socialengine - Widget文件上传
EN

Stack Overflow用户
提问于 2014-05-06 00:26:31
回答 1查看 784关注 0票数 1

我为Socialengine 4构建了一个Widget,并构建了一个Admin表单,用于从布局编辑器的页面中配置Widget。一切都很好,除了一件事--如果我再次编辑Widget而不接触文件上传,以前上传的图像就会消失。

下面是我的小部件的manifest.php:

代码语言:javascript
复制
...
'adminForm' => array(
     'elements' => array(       
          array(
        "file",
        "image_upload",
        array(
            'label' => "Bild Upload",
            'destination' => 'upload'
        )
    ),
....

这是我的问题,我怎样才能防止这种行为?在manifest.php中有选项吗?

谢谢你的帮助,也很抱歉我的英语不好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 04:37:58

简单的回答是,当您提交表单时,您的字段将被更新。

当您拖动一个小部件时,它的工作方式是如果在小部件信息的内容中有autoEdit true,就像在application\modules\Core\settings\content.php中这样

代码语言:javascript
复制
  array(
    'title' => 'Ad Campaign',
    'description' => 'Shows one of your ad banners. Requires that you have at least one active ad campaign.',
    'category' => 'Core',
    'type' => 'widget',
    'name' => 'core.ad-campaign',
   // 'special' => 1,
    'autoEdit' => true,
    'adminForm' => 'Core_Form_Admin_Widget_Ads',
  ),

而小部件表单将被自动加载。

否则,当您拖动具有其默认值的小部件时,它将临时保存在js中,而当您保存布局时,它将将所有布局信息保存到db中。

现在,当您编辑表单时,它将在弹出窗口中打开表单,并使用js(application\modules\Core\views\scripts\admin-content\widget.tpl)填充表单数据。

代码语言:javascript
复制
      if( $type(value) == 'array' ) {
        value.each(function(svalue){
          if( $(key + '-' + svalue) ) {
            $(key + '-' + svalue).set('checked', true);
          }
        });
      } else if( $(key) ) {
        $(key).value = value;
      } else if( $(key + '-' + value) ) {
        $(key + '-' + value).set('checked', true);
      }

现在提交数据,它将数据临时保存到js,并将小部件内容更新为父js文件application\modules\Core\views\scripts\admin-content\widget.tpl。

代码语言:javascript
复制
  <?php elseif( $this->values ): ?>

    <script type="text/javascript">
      parent.setWidgetParams(<?php echo Zend_Json::encode($this->values) ?>);
      parent.Smoothbox.close();
    </script>

  <?php else: ?>

当它获得表单值时,它会更新父部件信息。

希望这解决了您的问题,小部件不是典型的文件上传,或者它不是为此而设计的。我建议您学习application\modules\Core\controllers\AdminContentController.php这个控制器和application\modules\Core\views\scripts\admin-content\widget.tpl文件,而不是在这个问题上更加清楚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23484059

复制
相关文章

相似问题

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