Этот вопрос закрыт для ответов, так как повторяет вопрос Правильно ли я сделал на yii2 (Code review)?
@lilwings

Как можно соеденить две модели в yii2?

У меня есть две модели, одна для загрузки файла на сервер, а другая для добавления записи в бд с именем данного файла:

Model Info:

class Info extends ActiveRecord
{
    public static function tableName()
    {
        return '{{info}}';
    }

    public function rules() {
        return [
            [['title', 'preview', 'description_seo'], 'string', 'length' => [0, 255]],
            [['title', 'preview', 'description_seo'], 'filter', 'filter' => 'strip_tags'],
            [['title', 'preview', 'description_seo'], 'trim'],
            [['title', 'preview', 'description_seo'], 'required'],
            [['img_preview', 'img_full'], 'file', 'skipOnEmpty' => false, 'extensions' => 'jpg, jpeg'],
            ['description', 'safe'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'title' => 'Заголовок',
            'preview' => 'Превью',
            'description' => 'Описание новости',
            'img_preview' => 'Фотография (Превью)',
            'img_full' => 'Фотография (Основная)',
            'description_seo' => 'Description (SEO)',
        ];
    }
}


Model InfoUpload:

class InfoUpload extends Model
{
    public $img_preview;
    public $img_full;

    public function upload() {
        // Создание директории
        $folderName = $this->generateUniqFileName("web/info");
        FileHelper::createDirectory( Yii::getAlias("@frontend/web/img/info/$folderName") );

        // Создание файла
        $imgPreviewName = $folderName . '/' . $this->generateUniqFileName("web/info/$folderName") . '.' . $this->img_preview->extension;
        $this->img_preview->saveAs( Yii::getAlias("@frontend/web/img/info/$imgPreviewName") );

        // Создание Файла
        $imgFullName = $folderName . '/' . $this->generateUniqFileName("web/info/$folderName") . '.' . $this->img_full->extension;
        $this->img_full->saveAs( Yii::getAlias("@frontend/web/img/info/$imgFullName") );
    }

    public function generateUniqFileName($path) {
        $name = bin2hex(random_bytes(8));

        if ( file_exists( Yii::getAlias("@frontend/$path/$name") ) ) return $this->generateUniqFileName();
        else return $name;
    }
}


Я не понимаю как можно передать из модели Info ['img_preview', 'img_full'] в модель InfoUpload, и после получить название файлов и записать их обратно в модель Info ['img_preview', 'img_full']

Уже не первый день пытаюсь((
  • Вопрос задан
  • 44 просмотра
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы