【问题标题】:yii Cmultifile upload values not set on updation form while editing/updatingyii Cmultifile 上传值在编辑/更新时未在更新表单上设置
【发布时间】:2014-03-03 11:59:47
【问题描述】:

请帮帮我。

在 yii 中更新/编辑时获取上传的图片

在 CRUD 操作中

当我在创建和删除时在 cmultifile 中上传文件时工作正常,但我的问题是在更新该特定表单期间。

如果有任何建议保留 Cmultifile 中的下拉字段和文件,请始终根据数据库值进行设置。

请帮助我获取 CMultiFileUpload 小部件...从选定的数据库中获取文件

她的我的代码

在表格中 使用了这个小部件

  <?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'upload-form',
    // Please note: When you enable ajax validation, make sure the corresponding
    // controller action is handling ajax validation correctly.
    // There is a call to performAjaxValidation() commented in generated controller code.
    // See class documentation of CActiveForm for details on this.
    'enableAjaxValidation'=>false,
    'htmlOptions' => array(
        'enctype' => 'multipart/form-data',
    ),
)); ?>


<?php  $this->widget('CMultiFileUpload',
  array(
       'model'=>$model,
       'attribute' => 'Document',
       'accept'=>'jpg|gif|png|doc|docx|pdf',
       'denied'=>'Only doc,docx,pdf and txt are allowed', 
       'max'=>4,
       'remove'=>'[x]',
       'duplicate'=>'Already Selected',

       )
        );?>

在控制器中

  public function actionCreate()

    {
        $model = new Upload;
       echo Yii::app()->basePath.'/Images/';
       if(isset($_POST['Upload']))
        {
    if($filez=$this->uploadMultifile($model,'Document','/Images/'))
   {

   $model->Document=implode(",", $filez);
   }
   $model->attributes=$_POST['Upload'];
    if ($model->save())
            {
               $this->redirect(array('view', 'id' => $model->idUpload));
        }
        }
        $this->render('create', array(
            'model' => $model,
         ));

    }
//Function for uploading and saving Multiple files
    public function uploadMultifile ($model,$attr,$path)
    {
    /*
     * path when uploads folder is on site root.
     * $path='/uploads/doc/'
     */
    if($sfile=CUploadedFile::getInstances($model, $attr)){

      foreach ($sfile as $i=>$file){  

        // $formatName=time().$i.'.'.$file->getExtensionName();
        $fileName = "{$sfile[$i]}";
          $formatName=time().$i.'_'.$fileName;
         $file->saveAs(Yii::app()->basePath.$path.$formatName);
         $ffile[$i]=$formatName;
         }
        return ($ffile);
       }
     }

【问题讨论】:

  • 耶?请给代码!向我们展示您的控制器、模型和视图
  • 添加了表单和控制器的代码...请帮助我进行 CMultiFileUpload
  • “请帮助我获取 CMultiFileUpload 小部件...从选定的数据库中获取文件”:但我看不到任何“DB-Select-Request”?这个问题代表什么?您是否从这边复制了您的解决方案? stackoverflow.com/questions/21854460/…
  • 是的,因为它是我的解决方案和问题...我的问题是在更新/编辑上传的文件时应该出现在为该模型选择的小部件上

标签: php jquery forms yii


【解决方案1】:

文件字段与经典文本字段不同...这是因为文件字段不仅具有字段中的文件名...而且还有要上传到的文件...您可以将它们视为连接...因此您无法使用文件名预先填充文件字段。

解释工作流程:

  • 用户为任何其他字段输入了一些无效数据,选择要上传的文件并提交表单
  • 在提交时,HTTP 协议将表单数据连同所选文件一起发送到服务器
  • 那时在您的操作中,您可以使用 $_FILE 访问位于某个临时服务器文件夹中的文件
  • 现在...如果验证失败,您(我们)将再次显示(呈现)输入表单,换句话说,我们正在向客户端浏览器发送一个新表单,以显示验证错误
  • 因此,即使您可以预先填充之前选择的文件名,用户也可以获得此新表单...您不能以任何方式预先填充要上传的文件内容

我能想到的解决方案很少

  • 使用 ajax/客户端验证,以确保在提交表单时,所有字段都将通过验证。
  • 将图片上传分开(这就是为什么大多数像论坛这样的软件都以单独的形式上传头像/个人资料图片的原因)

有一些更高级的解决方案,但它们类似于上面的第二种方法......就像将整个表单与文件一起上传,然后在选择文件时甚至在提交表单之前使用 ajax 上传该文件.. . 但这是最​​复杂的,并且需要更多考虑,因为用户可以决定不提交表单但图片已经上传。

发件人:File Field

我用javascript解决了 附加该记录的文件并在选择新文件时隐藏。 因此,目前还没有找到完美的解决方案。 她的代码

显示文件

<?php 
                    if($model->register_id != Null || $model->register_id != "")
                        {
                            $attribute=CHtml::encode($model->medical_documents);
                            $file = str_getcsv($attribute ,",");
                            ?> <div id="UploadedFiles"> Uploaded Files: <?php  
                            foreach($file as $i=> $record)
                            { ?>
                            <div>
                            <span title="File Path :<?php echo Yii::app()->baseURL . "/Documents/" . $file[$i]; ?>">
                                    <?php echo $file[$i];?>
                            </span>
                            </div>
                        <?php   } }?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多