Alexey
Сделал в итоге говно
Artem
А вот вопрос валидировать как? Кто будет отвечать за валидацию этих полей?
Валидацию можно прикрутить, у меня валидация в отдельных моделях для форм и с данными не связана, но достаточно унаследовать ValueObject от Model
Artem
Если модель пользователя то ваще нахрен этот огород городить?
Пользователь только примера. Чем плох пример с номерами телефонов?
Artem
Ладно бы трейтом цеплял
Это можно сделать и трейтом, но это yii-specific расширение, так что зачем?
Alexey
Это можно сделать и трейтом, но это yii-specific расширение, так что зачем?
Конфигурация поведение yii делается декларативно
Alexey
В секции behaviors
Alexey
Смотри paulzi/yii2-json-behavior и не изобретай великов)
Artem
Короче, попробую еще раз) Если приходит фич-реквест, который проще реализовать хранением json-а произвольной структуры в поле бд, то мы либо маппим json сами, либо тащим какой-то extension. Ни один из них не предоставил мне хранение json-объектов как моделей. Я же могу это сделать (и сделал, но пока без валидации)
Artem
Смотри paulzi/yii2-json-behavior и не изобретай великов)
Вы действительно считаете, что интерфейс массивов для доступа таким данным - это нормально? Вас это не смущает, что разработчик должен помнить, где у него модель, а где json в массиве?
Alexey
Нормального маппинга jsonschema в модели ты все равно не сделал
Artem
Нормального маппинга jsonschema в модели ты все равно не сделал
Пока и не делал, в этом и вопрос - текущая реализация меня устраивает. Речь именно про интерфейсы. Если хотите - это proof of concept
Artem
Окей, может стоить на форуме попробовать, а то тут сложно конструктивно?
Malika
всем привет
Malika
есть вопрос
Alexey
Окей, может стоить на форуме попробовать, а то тут сложно конструктивно?
тебе конструктивно сказали - убери конфигурацию атрибутов в массив конфигурации поведения
Malika
как принять файл через рест
Malika
public function actionCreate(){ $request = Yii::$app->request; if($request) { $model = new Application(); $file = UploadedFile::getInstanceByName('file'); if ($model->file && $model->validate()) { $filename = uniqid() . '.' . $model->file->extension; $model->file->saveAs(Yii::getAlias('@frontend/web/files/' . $filename)); $model->filename = $filename; $model->user_id = $request->getBodyParam('user_id'); $model->category_id = $request->getBodyParam('category_id'); $model->district_id = $request->getBodyParam('district_id'); $model->address = $request->getBodyParam('address'); $model->apartment = $request->getBodyParam('apartment'); $model->subject = $request->getBodyParam('subject'); $model->body = $request->getBodyParam('body'); $model->type = $request->getBodyParam('type'); $model->save(); return [ 'result' => true, 'success' => 'Ваше обращение отправлено.' ]; } else { return [ 'result' => null, 'error' => 'Not saved', ]; } } }
Malika
отправляю через postman
Malika
Content-Type multipart/form-data
Malika
но файл не приходит
Malika
а без headers приходит как быть?
Alexey
там надо читать rawBody
Alexey
для начаала посмотри че у тя в $_FILES
Malika
null с Content-Type multipart/form-data
Alexey
оч странно 😊
Malika
😐
Malika
'request' => [ 'parsers' => [ 'application/json' => 'yii\web\JsonParser', ], ],
Malika
в конфиге так указала
Malika
'multipart/form-data' => 'yii\web\MultipartFormDataParser'
Malika
это не работает что ли
Alexey
без этого вроде норм работало
Malika
у вас есть пример кода или например
Malika
от своего чтоли
Alexey
да у меня тоже самое :D
Alexey
$_FILES он заполняется до реквест парсеров
Alexey
самим php
Alexey
странно что он у тя пустой
Artem
тебе конструктивно сказали - убери конфигурацию атрибутов в массив конфигурации поведения
да, я это заметил. Но для такого решения у меня была причина. При RAD у меня в поведениях может накопиться много всего, а так как я это все затеял чтобы использовать анонимные классы PHP7 - очень удобно объявлять модель прямо "inline". Поэтому куче моделей, наверное, не место в behaviors()
Artem
В конфигурации приложения?
Alexey
поведения
Artem
поведения
в поведениях может накопиться много всего, а я собираюсь использовать анонимные классы PHP7, очень удобно объявлять модель прямо "inline". Т.е. мне не нужны новые файлы с классами или "лишние" классы внутри файла. Поэтому я придумал статический метод, чтобы собрать все дочерние документы вместе.
Malika
Artem
поведения
Мне, кажется, что ваш аргумент стоит внимания. Но тогда для моего кейса неудобное API. Подумаю над этим, спасибо
Artem
Таки если бы кто-то сделал до меня расширение рабочее на синтаксисе new class - я бы его заюзал
Malika
ниче если без headers будем отправлять?
Artem
Вопрос старожилам http://yiiframework.ru/forum/ Если я хочу обсудить свое расширение, плюсы-минусы и целесообразность - оно еще не готово к релизу - это в общий тред вопросы или сразу в авторский код?
Vladislav
Всем привет) где можно посмотреть полную рабочую реализацию загрузки фотографий в виджете vova07\imperavi\Widget, а то у меня не хочет грузить и я хз почему.
Кион
Привет, в логи ничего не пишет?
Vladislav
в консоли браузера ничего
Vladislav
а дебага нет так как он на хостинге лежит
Vladislav
а хотя нет 403 ошибка есть
Vladislav
Vladislav
ладно спасибо)) я уже сам продвинулся)
Roman
ладно спасибо)) я уже сам продвинулся)
всегда пожалуйста, спрашивай еще 😊
Niko
ладно спасибо)) я уже сам продвинулся)
нет прав на запись в папку?
Artem
В чем преимущество использования анонимного класса?
Возможность декларативно задать структуру вложенных документов "не отходя от кассы"
Vladislav
права были не прописаны в behaviors контрллера
Кион
нет прав на запись в папку?
кстати, как вариант
Artem
В чем преимущество использования анонимного класса?
Естественным для языка PHP способом с использованием новых фич)
Alexey
когда хочется писать как на джаве, но на пхп
Vladislav
хотя щас включил дебак ajax на загрузку проходит с результатом 200, но куда файл девается не понятно или я пути прописал не верно
Artem
ну если хочется вспоминать ['param'] или >param - то можно и не запариваться)
Artem
или дать всем установку юзать phpDoc. а можно заюзать value objects и забить, где это хранится и как реализовано (идея такая)
Alexey
не оч понятно как это поможет
Alexey
в IDE подсветки все равно не будет
Alexey
а если не будет подсветки, то можно и json behavior заюзать, который в stdObject все десериализует
Artem
Поможет просто: у тебя отныне есть Model, у которой вполне может быть model->submodel->subsubmodel. StdObject не аргумент - что если мне нужна логика над моиими inline-моделями?
Alexey
единственный плюс который тут можно найти - это валидация схемы, но у тебя ее вроде и нет
Artem
Все заранее договорились, что работают с моделями как нормальной доменной моделью и не парятся, что это было json поле или relation
Alexey
а потом тебе запостят [[[[[[[]]]]]]]] в профиль
Alexey
и все пойдет по звезде 😊
Artem
С чего же? Делайте FormModel и валидируйте.
Artem
Или я сделаю там валидацию
Artem
Вы модели как сохраняете? ->save()? А пачку моделей?
Alexey
в общем ты пытаешься в активрекорд скотчем и изолентой прикрутить доменную модель, это оч странно
Artem
Типа того
Alexey
активрекорд это другой совсем паттерн (: