Ответы пользователя по тегу Yii
  • Ошибка "Call to a member function saveAs() on a non-object" в чем ошибка?

    Ballly
    @Ballly Автор вопроса
    grinat, Вы не могли бы указать или показать на моем примере как реализовать проверку, я так понимаю проверку надо сделать в функции upload в модели, но как ее правильно прописать не пойму, так как я пытался, то у меня пошли только еще новые ошибки связанные с неправильно написанной функцией.
    Ответ написан
  • Как осуществить одновременную загрузку документа и картинки?

    Ballly
    @Ballly Автор вопроса
    Файл _form.php
    Загрузка картинки
    <?= $form->field($model, 'gallery[]')->widget(FileInput::classname(), [
        'name' => 'attachment_49[]',
        'options'=>[
            'multiple'=>true
        ],
    ]);
    ?>

    Загрузка документа
    <?= $form->field($model, 'docFile')->widget(FileInput::classname(), [
        'name' => 'attachment_51',
        'pluginOptions' => [
            'showUpload' => false,
            'browseLabel' => '',
            'removeLabel' => '',
            'mainClass' => 'input-group-lg'
        ],
    ]) ?>


    Модель
    public $gallery;
    public $docFile;
    public $dirPath = 'upload/documents/';
    public $dirName = '';
    
    // Загрузка изображение
    public function uploadGallery(){
        if($this->validate()){
            foreach ($this->gallery as $file){
                $path = 'upload/store/' . $file->baseName . '.' . $file->extension;
                $file->saveAs($path);
                $this->attachImage($path);
                @unlink($path);
            }
            return true;
        }else{
            return false;
        }
    }
    
    // Загрузка документа
    public function upload()
    {    
        if ($this->validate()) {
            $path = $this->processMkDir();
            $fileName = Inflector::slug(pathinfo($this->str2url($this->docFile->baseName), PATHINFO_FILENAME)) . '.' . $this->docFile->extension;
            $this->docFile->saveAs($path . $fileName);
            return $fileName;
        } else {
            return false;
        }
    }
    
    protected function processMkDir()
    {
        $path = (!empty($this->dirName)) ? $this->dirPath.$this->dirName.'/' : $this->dirPath;
        if (!file_exists($path)) {
            mkdir($path, 0777, true);
        }
        return $path;
    }
    Ответ написан
    Комментировать
  • YII2 вывод массива в yii2-widget-select2?

    Ballly
    @Ballly Автор вопроса
    Спасибо! Ваш вариант кода идеально подошел для решения поставленной задачи! После применения кода, остался только один вопрос, сейчас в селект выводятся все категории, включая что родительские категории выводятся в отдельной категории "0". Не подскажите, как убрать их чтобы не выводились отдельным массивом "0", но при этом не пропали как подзаголовки категорий устройств?
    5bf1be8aeee98839280765.png
    Ответ написан