Валидация масива при загрузке файлов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
spektr08
Сообщения: 88
Зарегистрирован: 2012.08.13, 15:36

Валидация масива при загрузке файлов

Сообщение spektr08 »

Всем привет!
Есть массив фалов.
Моделька

Код: Выделить всё

<?php

namespace qr\forms\auth\register;


use Yii;
use yii\base\Model;
use yii\web\UploadedFile;

class RegisterFormStep3 extends Model{
    
    public $files;
    public $user_id;
    
    
    public function rules(){
        return [
            ['files','each', 'rule' =>['file','extensions' => 'zip, rar, doc, docx, pdf, psd,jpeg, gif, png,jpg'] ],
            ['user_id','safe'],
            ];
    }


    public function beforeValidate(): bool
    {
        if (parent::beforeValidate()) {
            $this->files = UploadedFile::getInstances($this, 'files');
            return true;
        }
        return false;
    }
}
View

Код: Выделить всё

<?php

use yii\helpers\Html;
use dosamigos\fileupload\FileUploadUI;
use yii\bootstrap\ActiveForm;
use consynki\yii\input\ImageInput;
?>

<div class="list-step3">
    <?php $form = ActiveForm::begin(['id' => 'form-signup', 'options' => [
                        'enctype' => 'multipart/form-data',
                        'class' => 'form-step2'
                    ],]);
              $model2->is_client = 0;
              echo $form->field($model2, 'is_client',['options'=>['class'=>'check_step_3']])->radioList([0=>Yii::t('app','нет'),1=>Yii::t('app','да')]);
      
 <?php
         echo $form->field($model2, 'user_id', ['options' => ['class' => 'form-group invisible']])->hiddenInput()->label(false);
         echo $form->field($model2, 'edrpou', ['options' => ['class' => 'form-group form-qr']])->textInput(['maxlength'=>10,'tabindex'=>12,'minlength'=>8,'pattern'=>'^([0-9]{8}|[0-9]{10})$']);
        ?>
<div id="download_docs" >
    <div class="list-step3" >
        <p><?php echo Yii::t('app', 'Загрузите скан-копии документов'); ?></p>
        <ul>
            <li><?php echo Yii::t('app', 'Cправка из обслуживающего банка о наличии текущего счета'); ?>;</li>
            <li><?php echo Yii::t('app', 'Cправка о постановке на учет налогоплательщика'); ?></li>
            <li><?php echo Yii::t('app', 'Приказ и Протокол о назначении лица, подписавшего Договор'); ?>;</li>
            <li><?php echo Yii::t('app', 'Карта с образцами подписей должностных лиц Торговца. В карту также включается образец'); ?>
                <?php echo Yii::t('app', 'отпечатка пальца Торговца. В случае изменения любой информации, указанной в карте,'); ?>
                <?php echo Yii::t('app', 'немедленно предоставлять Банку обновленную карту с образцами подписей'); ?>;
            </li>
            <li><?php echo Yii::t('app', 'Документы, подтверждающие право Торговца на осуществление операций торговли и'); ?>
                <?php echo Yii::t('app', 'предоставления услуг'); ?>;
            </li>
            <li><?php echo Yii::t('app', 'Другие документы, необходимые для идентификации Торговца для предоставления услуг в'); ?>
                <?php echo Yii::t('app', 'соответствии с законодательством Украины.') ?>
            </li>
        </ul>
         <?php // echo Yii::t('app', 'Файл должен быть в формате zip или rar и не превышать 10mb'); ?>
    </div> 
    <div class="download-step3-pdf">
        <br/>
        <?php
          echo  $form->field($model, 'files[]')->widget(ImageInput::className(), ['value'=>'/img/add-image.png','options'=>['accept'=>'.png, .jpg, .jpeg']])->label(false);
          echo  $form->field($model, 'files[]')->widget(ImageInput::className(), ['value'=>'/img/add-image.png' ])->label(false);
          echo  $form->field($model, 'files[]')->widget(ImageInput::className(), ['value'=>'/img/add-image.png' ])->label(false);
          echo  $form->field($model, 'files[]')->widget(ImageInput::className(), ['value'=>'/img/add-image.png' ])->label(false);
          echo  $form->field($model, 'files[]')->widget(ImageInput::className(), ['value'=>'/img/add-image.png' ])->label(false);             
          echo  $form->field($model, 'files[]')->widget(ImageInput::className(), ['value'=>'/img/add-image.png' ])->label(false);
          echo  $form->field($model, 'user_id', ['options' => ['class' => 'form-group invisible']])->hiddenInput()->label(false);
        <div class="has-error" id="file_error" style="display:none;">
        <p class="help-block help-block-error" style="co"><?php echo Yii::t('app','Нужно загрузить файл'); ?></p>
        </div>
    </div>
    
    </div>
     <div id="edrpou">
        <input type='hidden' name='step' value='<?php echo $this->params['step']; ?>'/>
        <div class="row">
            <div class="button-register">
                <div class="col-md-6 col-sm-6">
                    <a onclick="javascript:history.back();" class="back-step"><?php echo Yii::t('app', 'назад'); ?></a>
                </div>
                <div class="col-md-6 col-sm-6">
                    <?= Html::submitButton(Yii::t('app', 'далее'), ['class' => 'next-step', 'id' => 'step3','name' => 'signup-button']) ?>
                </div>
            </div>
        </div>
        <?php ActiveForm::end(); ?>
    </div>


</div>

Почему не работает валидатор each для полей files
Изображение
Ответить