Php 使用kartik文件输入上传Yii2 ajax文件时出错

Php 使用kartik文件输入上传Yii2 ajax文件时出错,php,ajax,yii2,yii2-advanced-app,Php,Ajax,Yii2,Yii2 Advanced App,我正在使用ajax中的kartik yii2扩展名执行文件上传 这是一个法庭系统的实现,在这个系统中,一个案件可以有许多证据,一个人可以上传这些证据 模型 案例代码: public function rules() { return [ [['ref_no', 'case_description', 'raised_on', 'status', 'raised_by', 'updated_on', 'case_type'], 'required'], [[

我正在使用ajax中的kartik yii2扩展名执行文件上传

这是一个法庭系统的实现,在这个系统中,一个案件可以有许多证据,一个人可以上传这些证据

模型 案例代码:

public function rules()
{
    return [
        [['ref_no', 'case_description', 'raised_on', 'status', 'raised_by', 'updated_on', 'case_type'], 'required'],
        [['raised_on', 'updated_on'], 'safe'],
        [['ref_no', 'status', 'raised_by', 'case_type'], 'string', 'max' => 100],
        [['case_description'], 'string', 'max' => 300]
    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'ref_no' => 'Ref No',
        'case_description' => 'Case Description',
        'raised_on' => 'Raised On',
        'status' => 'Status',
        'raised_by' => 'Raised By',
        'updated_on' => 'Updated On',
        'case_type' => 'Case Type',
    ];
}


public function getEvidences()
{
    return $this->hasMany(Evidence::className(), ['case_ref' => 'ref_no']);
}
模型代码:

    public function rules()
{
    return [
        [['case_ref', 'saved_by', 'saved_on', 'evidence_type'], 'required'],
        [['saved_on'], 'safe'],
        [['path'], 'safe'],
        [['case_ref', 'saved_by'], 'string', 'max' => 100],
        [['evidence_type'], 'string', 'max' => 50],
        [['path'], 'file']
    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'case_ref' => 'Case Ref',
        'saved_by' => 'Saved By',
        'saved_on' => 'Saved On',
        'id' => 'ID',
        'evidence_type' => 'Evidence Type',
        'path' => 'Path',
    ];
}

public function getCaseRef()
{
    return $this->hasOne(Cases::className(), ['ref_no' => 'case_ref']);
}
在我的控制器操作中创建(案例控制器) 代码:

由“创建”命令渲染的纵断面视图 代码:


上面总是返回错误no file for upload,表明文件数据没有传递到控制器上

您在视图表单中使用模型证据(在$form->field($Evidence,'path')。请尝试使用_print\\r($\u FILES)进行调试。谢谢,我发现您需要在视图的选项中传递name属性,以便覆盖默认属性。(即添加“name”=>“name”
    public function actionCreate()
{
   $model = new Cases();
    $evidence = new Evidence();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->ref_no]);
    } 
    else {
        return $this->render('profile', [
            'model' => $model,'evidence'=>$evidence,
        ]);
    }
}
    <?php $form = ActiveForm::begin([
            'options' => ['enctype'=>'multipart/form-data']
        ]); ?> 
<?php   echo $form->field($evidence, 'path')->widget(FileInput::classname(), [ 
                    'options' => ['accept' => 'image/*','multiple' => true],
                    'pluginOptions' => [
                 'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ',
                    'showPreview' => true,
                    'showCaption' => true,
                    'showRemove' => true,
                    'showUpload' => true,
                    'filename'=>'kagumo',
                    'browseLabel' =>  'Insert Evidence',
                   'uploadUrl' => Url::to(['cases/upload']),
                    'maxFileCount' => 10
                    ]
        ]
        );?>
<?php ActiveForm::end(); ?>
public function actionUpload(){


   //print_r($_FILES['images']);

if (empty($_FILES['name'])) {
    echo json_encode(['error'=>'No files found for pload.']); 
    // or you can throw an exception 
    return; // terminate
}else{
    echo  json_encode(['error'=>'files available for upload']);
}
 }