【问题标题】:Socialengine - Widget File uploadSocialengine - 小部件文件上传
【发布时间】:2014-05-06 00:26:31
【问题描述】:

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

这是我的小部件 manifest.php:

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

这是我的问题,我该如何防止这种行为? manifest.php 里面有选项吗?

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

【问题讨论】:

    标签: php socialengine


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 2017-07-28
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多