Socialengine - Widget文件上传

时间:2014-05-06 00:26:32

标签: php socialengine

我为Socialengine 4构建了一个Widget,并构建了一个Admin-Form,用于在Layout - Editor中配置页面内的Widget。一切正常,除了一件事 - 如果我再次编辑Widget而不触及文件上传,之前上传的图像就消失了。

这是我的小部件的manifest.php:

...
'adminForm' => array(
     'elements' => array(       
          array(
        "file",
        "image_upload",
        array(
            'label' => "Bild Upload",
            'destination' => 'upload'
        )
    ),
....

以下是我的问题,如何防止此行为? manifest.php里面有一个选项吗?

感谢您的帮助,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

简单的答案是,当您提交表单时,您的字段将不会更新

它的工作方式是拖动窗口小部件,如果在内容中,窗口小部件信息的autoEdit在application \ modules \ core \ settings \ _php.php

中就像这样
  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)

      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

  <?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 文件比你在这个问题上会更清楚