vova07/yii2-fileapi-widget имя загруженного файла

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

vova07/yii2-fileapi-widget имя загруженного файла

Сообщение webplus »

Здравствуйте!
Вопрос по виджету https://github.com/vova07/yii2-fileapi-widget
Как получить имя загруженного файла, чтобы потом сохранить его в базу?
я думаю должен быть какой то статический метод getNameFile
Но ведь загрузку делает behaviors и из него надо вытянуть имя с которым он файл загрузил.

Еще вопрос, сейчас оформление виджета выглядит так http://joxi.ru/RmzonKGcWyg5Z2 , но а если посмотреть документацию самой яваскрипт библиотеки, которая делает crop http://rubaxa.github.io/jquery.fileapi/ то там это выглядит так http://joxi.ru/l2ZxZn9c84dLRr
Как такое оформление сделать в Yii-виджете и возможно ли это?
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: vova07/yii2-fileapi-widget имя загруженного файла

Сообщение Nex-Otaku »

1. Читайте исходники виджета + документацию виджета.

2. Читайте документацию этой js-библиотеки. Например, по вашей ссылке я вижу полное описание как это сделать, и JS-код, и HTML-код.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: vova07/yii2-fileapi-widget имя загруженного файла

Сообщение webplus »

Nex-Otaku писал(а): 2018.02.23, 18:42 1. Читайте исходники виджета + документацию виджета.

2. Читайте документацию этой js-библиотеки. Например, по вашей ссылке я вижу полное описание как это сделать, и JS-код, и HTML-код.
Вывод настроил, переопределил свойства templete на свое:

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

'template' => '@frontend/views/fileapi/single.php'
- все красиво получилось.
Но не могу разобраться с поведением:

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

    public function behaviors()
    {
        return [
            'uploadBehavior' => [
                'class' => UploadBehavior::className(),
                'attributes' => [
                    'preview_url' => [
                        'path' => '@frontend/web/images/previews',
                        'tempPath' => '@frontend/web/images/temp/previews',
                        'url' => '/images'
                    ],
                    'image_url' => [
                        'path' => '@frontend/web/images/images',
                        'tempPath' => '@frontend/web/images/temp/images',
                        'url' => '/images'
                    ]
                ]
            ]
        ];
    }
- я вызываю в акшкне

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

    public function actionUpload()
    {
        $model = new Photo();

            $model->preview_url = UploadedFile::getInstanceByName('file');
            if ($model->load($_POST)) {
                print_r($model);exit;
            }

    }
но поведение не срабатывает, я просто еще с таким сложным поведением не работал и не пойму как сделать чтобы оно сработало, а потом произошел save и названия сохраненного файла записалось в таблицу.
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: vova07/yii2-fileapi-widget имя загруженного файла

Сообщение Akulenok »

там же автоматически название пишется в базу.
Я помню мне надо было делать еще превьюшки к основному файлу, я наследовался от extends \vova07\fileapi\behaviors\UploadBehavior
и переопределял метод saveFile, вообщем отнаследуйтесь и посмотрите $this->owner->$attribute
ភាសាខ្មែរ Yii2 - это кайф!
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: vova07/yii2-fileapi-widget имя загруженного файла

Сообщение webplus »

Akulenok писал(а): 2018.02.24, 08:43 там же автоматически название пишется в базу.
Не могу понять как правильно экшен реализовать, чтобы данные имени файла в базу писались:
вот мой экшен:

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

public function actionFileapiUpload()
{
    $model = UserOnly::findOne(Yii::$app->user->id);
    $model->load($_POST);
    $file = UploadedFile::getInstanceByName('file');
    $model->image = $file->tempName;
    $model->save();
    print_r($model->getErrors());
}
А экшен который дается в примере я решил заменить на свой, потому что тот только загружает фото на сервер, а мне необходимо еще и в база писать и по этому я решил через поведение.
вот моя модель:

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

public function rules()
{
    return [
        [['image'], 'file', 'extensions' => 'jpg, gif, png'],
    ];
}

public function behaviors()
{
    return [
        'uploadBehavior' => [
            'class' => UploadBehavior::className(),
            'attributes' => [
                'image' => [
                    'path' => '@webroot/upload/profile',
                    'tempPath' => '@webroot/upload/profile/temp',
                    'url' => '/upload/profile'
                ],
            ]
        ]
    ];
}
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: vova07/yii2-fileapi-widget имя загруженного файла

Сообщение Akulenok »

там из коробки все работает и в базу пишется.
rules
[['pic'], 'string', 'max' => 255],
ភាសាខ្មែរ Yii2 - это кайф!
Ответить