2016-12-04 15:36:05 2011次浏览 0条回答 0 悬赏 300 金钱

问题:主要的错误发生在validate()上面,怎么样才能使图片的字段验证合法;而不显示为字段为空;

描述:实际中上传图片肯定和表单其他字段混合上传的,比如title、content等

1.我照着文档加入了image字段的验证,model里面的rule规则如下:

public function rules()
{
    return [
        [['username','password','email'],'required'],
        ['username','string','length'=>[2,10]],
        ['password','string','max'=>20],
        ['email','email'],
        ['brief','string','length'=>[10,255]],
        [['image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
    ];
}

2.随后我在视图view中进行了渲染:

<?php $form=ActiveForm::begin()?>
    <?= $form->field($model,'username')?>
    <?= $form->field($model,'password')?>
    <?= $form->field($model,'image')->fileInput()?>
    <?= $form->field($model,'email')?>
    <?= $form->field($model,'brief')?>
    <?php echo \yii\helpers\Html::submitButton('修改',['class'=>'btn btn-primary'])?>
<?php ActiveForm::end()?>

3.我在控制器中将post过来的数据传递过去验证;

$model = new MessageForm();

if (\Yii::$app->request->isPost) {

    $model->image = UploadedFile::getInstance($model, 'image');
   
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        $this->redirect(['site/index'])
    }
}
return $this->render('info', [
        'model' => $model,
]);

我输入之后还是显示:并且上传失败
无标题.png

但是当我去掉rule里面图片的的 'skipOnEmpty' => false 时候,图片上传成功;

最后我将打印POST里面的内容,发现image字段为空,好诡异,不知道该怎么解决了。哈哈

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
堂吉诃德
总监

堂吉诃德 南极冰岛

注册时间:2016-10-31
最后登录:2017-11-27
在线时长:56小时51分
  • 粉丝6
  • 金钱2185
  • 威望0
  • 积分2745

热门问题