【问题标题】:Yii2 upload image from modal issueYii2从模态问题上传图片
【发布时间】:2016-07-28 18:59:20
【问题描述】:

我正在使用 yii2 引导模式来上传图像,问题是我需要双击创建按钮然后表单提交才能工作,否则单击时它不起作用。 双击图片正在上传,表单数据也保存到数据库中。

我的代码有这个问题吗?

代码如下:

//表格

<?php Pjax::begin(['id' => 'banner-form']) ?>
<?php $form = ActiveForm::begin([
    'id' => 'banner-form', 
    'options' => [
    'data-pjax' => true,
    'enctype' => 'multipart/form-data'
    ]
    ]); 
?>
<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'banner')
->fileInput([
"accept"=>"image/*"
]) 
?>

<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>

<?php ActiveForm::end(); ?>
<?php Pjax::end(); ?>

//型号

[['banner'], 'file', 'skipOnEmpty' => false, 
                     'extensions' => ['jpg', 'jpeg', 'png', 'gif']
        ]

//index.php

<p>
 <?= Html::a(Yii::t('app', 'Create Banner'), null, ['class' => 'btn btn-success', 'id'=>'createBannerButton', 
           'value'=>Url::to(['/banner/create'])]) ?>
</p>

<?php Pjax::begin(['id' => 'banner-index']) ?>
<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,

       ....

 ]); ?>
<?php Pjax::end(); ?>

//控制器

use yii\web\UploadedFile;

class BannerController extends Controller
{
 ...
    public function actionCreate()
    {
        $model = new Banner();

        if ($model->load(Yii::$app->request->post())){

        $file = UploadedFile::getInstance($model, 'banner');
            if (!empty($file))
                $model->banner = $file;
         if($model->save()){
            if (!empty($file))
              $file->saveAs( Yii::getAlias('@root') .'/uploads/' . $file);

            return $this->redirect(['view', 'id' => $model->id]);
         }
        }
        else if (Yii::$app->request->isAjax) {
             return $this->renderAjax('create', [
                'model' => $model,
            ]);
        }
        else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }
   ...
}

//layouts/main.php

<?php 

Modal::begin([
        'header' => '',
        'id' => 'modal',
        'size' => 'modal-medium', //medium
         'clientOptions' => ['backdrop' => 'static', 'keyboard' => false]
      ]);

  echo "<div id='modalContentBackend'>
        <div class='col-lg'>
          <img src='/images/loading.gif' width='280' height='210' alt='loading...'>
        </div>
        </di>";

Modal::end();
?>
<?php $this->endBody() ?>

//后端/web/js/custom.js

$(function(){
    $("#createBannerButton").click(function(){
        $("#modal").modal('show')
                   .find('#modalContentBackend')
                   .load($(this).attr('value'));
    });
});

//后端/资产/AppAsset

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
        'js/custom.js'
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

【问题讨论】:

    标签: yii2 yii2-advanced-app


    【解决方案1】:

    我遇到了问题,我在 index.php 和 _form.php 中包含了Pjax::begin(),我已经从 _form.php 中删除了Pjax::begin(),现在它可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2019-02-03
      • 2011-04-23
      • 2020-07-08
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多