MultiFileUpload validation

Всем привет.

Есть такое правило


    public function rules() {

        return array (

                array('files', 'file', 'types' => 'jpg, gif, png', 'allowEmpty' => true),

        );

    }

files - массив, формируемый MultiFileUpload widget.

При загрузке файлов, отличный от разрешённых данные проходят валидацию успешно, чего конечноже происходить не должно =)

Заглянул в код CFileValidator… там есть поддержка массивов

Баг?Или я что-то не так делаю…ткните пожалуйста)

Великолепно…а ответ как всегда был близок…


array('files', 'file', 'types' => 'jpg, gif, png', 'allowEmpty' => true, 'maxFiles' => 4),

Необходимо указывать maxFiles, по дефолту значение равно 1

В исходнике вот так:


        if($this->maxFiles > 1) { // Виновник

            $files=$object->$attribute;

            if(!is_array($files))

                $files = CUploadedFile::getInstances($object, $attribute); // То что мне и нужно

// И т.д. и т.п.

        }

        else {

            $file = $object->$attribute; // А так делать не следует, у меня имена инпутов files[1], files[2]

// И т.д. и т.п.

        }

@corpix

Хотелось бы увидеть // И т.д. и т.п. после $files = CUploadedFile::getInstances($object, $attribute);

Нужен ли цикл для сохранения отдельно каждого файла? Или есть другой путь?

Если я использую цикл:




  ...

$model->fileToLoad = CUploadedFile::getInstances($model, 'fileToLoad');

for ($i=0; $i<count($model->fileToLoad);$i++){

  $newImage = new Image;

  $newImage = $model->fileToLoad[$i];

  ...

  

  if ($newImage->save()) {

    $newImage->image->saveAs($imagesPath.'/'.$fileName.'.jpg');

  }

}

$this->redirect(array('index'));



То в этом случае если пользователь делает double click или успевает сделать много кликов, Action не успевает обрабатывать цикл и происходит повторная загрузка файлов. Даже не повторная а столько раз сколько пользователь успел нажать кнопку Submit до закрытия формы.

Даже несмотря на redirect…

Есть ли решение или нужно будет контролировать контент формы на схожесть?

Заранее спасибо всем Yii и не только фанам :rolleyes: .

$model - используется для валидации формы до манипуляций с файлами.