2017-01-03 104 views
1

我想单个文件上传使用Kartik的FileInput。通过标准执行此操作时Yii2:结合Kartik的FileInput和Kartik的DetailView

事情去细创建形式为以下收益非空

$filedata = UploadedFile::getInstance($model, 'filedata'); 

进入卡尔蒂克的的DetailView在编辑模式下,试图更新但它总是返回文件。

view.php我:

[ 
    'attribute' => 'filedata', 
    'visible' => Yii::$app->user->can('doIt'), 
    'type' => DetailView::INPUT_FILEINPUT, 
    'rowOptions' => ['class' => 'kv-view-hidden'], 
    'widgetOptions' => ['options' => ['accept' => 'application/pdf'], 
    'pluginOptions' => [ 
     'showUpload' => false, 
     'allowedFileExtensions' => ['pdf'], 
     'initialCaption' => $model->filename, 
    ], 
    'pluginEvents' => [ 
     'filecleared' => <whatever>, 
     'fileloaded' => <whatever>, 
    ], 
    ], 
], 

而在_form.php(其中不工作):

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> 

    <?= $form->field($model, 'filedata')->widget(FileInput::classname(), [ 
     'options' => ['accept' => 'application/pdf'], 
     'pluginOptions' => [ 
      'showUpload' => false, 
      'allowedFileExtensions' => ['pdf'], 
      'initialCaption' => $model->getOldAttribute('filename'), 
     ], 
     'pluginEvents' => [ 
      'filecleared' => <whatever>, 
      'fileloaded' => <whatever>, 
     ], 
    ]) 
?> 

任何想法? (顺便说一下,不知道'multipart/form-data'是否需要view.php,因为它在_form.php,所以任何人确认这一点,并提供一些细节应该是受欢迎的)。

回答

0

当然,无论是在_form.phpview.php需要的multipart/form-data的为好,如下:

'formOptions' => ['options' => ['enctype' => 'multipart/form-data']], 
'attributes' => [ 
... 
[ 
    'attribute' => 'filedata', 
    'visible' => Yii::$app->user->can('doIt'), 
    'type' => DetailView::INPUT_FILEINPUT, 
    'rowOptions' => ['class' => 'kv-view-hidden'], 
    'widgetOptions' => ['options' => ['accept' => 'application/pdf'], 
    'pluginOptions' => [ 
     'showUpload' => false, 
     'allowedFileExtensions' => ['pdf'], 
     'initialCaption' => $model->filename, 
    ], 
    'pluginEvents' => [ 
     'filecleared' => <whatever>, 
     'fileloaded' => <whatever>, 
    ], 
    ], 
], 
.... 
]