Елена
дааа, это точно)
Дмитрий
Либо эта ошибка не про ноды. Ноды ведь, насколько я понимаю, на весь диск, а у Вас не 100 папок по 1% же :)
Дмитрий
хотя может я и ошибаюсь....
Pavel
Добрый день, коллеги. Подскажите, а в четверке Джумлы случаем нет чего-нибудь типа guzzle?
Artem
https://habr.com/ru/post/568996/
Pavel
https://habr.com/ru/post/568996/
Опа, благодарствую!
Sergey
Опа, благодарствую!
Там неточность есть, которую хабр уже не даёт исправить. Для get-запросов нет параметра $data.
Igor
Подскажите, как называется?
$http = new Http(); $http->setOption('transport.curl', array( CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0 )); $response = (in_array($method, array('createTouristPayment'))) ? $http->post($url, $data, $headers, $timeout) : $http->get($url, $headers, $timeout); if (((new Version())->isCompatible('4.0'))) { $body = $response->body; $context = (!empty($body)) ? new Registry($response->body) : false; } else { $context = (!empty($response->body)) ? new Registry($response->body) : false; } if ($response->code !== 200 || !$context) { $message = ($context) ? $context->get('error') : preg_replace('#^[0-9]*\s#', '', $response->headers['Status']); $code = $response->code; if (in_array((int) $code, array(404, 422))) break; sleep(5); }
Igor
примерно так.
Pavel
Ребят, ещё такой вопрос: Вот у нас есть стандартная модель формы: Joomla\CMS\MVC\Model\FormModel У него есть метод save. Если мы создаем дочернюю модель и в ней переопределяем метод и вызываем parent::save($data) То как получить id сохраненной записи?
Дмитрий
можно аоспользоваться методом lastid, или както так, от dbo.
Pavel
можно аоспользоваться методом lastid, или както так, от dbo.
Хм.. Вариант, но не уверен что сработает, мне кажется ещё запросы в БД присутствуют связанные с тэгами и прочими сущностями.
Дмитрий
но это криво, конечно... Либо хакнуть родителя и там вывести. Другого вроде нет...
Pavel
Такс, тогда получается остается еще вариант только перенести часть логики из модели в Table
Pavel
Только он возвращает true|false
Artem
можно ссылку на гитхаб?
Artem
я не помню такого...
Дмитрий
Только он возвращает true|false
вот этот метод и изменить, тоже, не самый лучший вариант
Дмитрий
либо плагин на событие aftersave...
Pavel
я не помню такого...
А, не, спутал, там AdminModel метод этот имеет, но суть та же
Pavel
Понял, спасибо!
Pavel
Буду мозговать. Думаю можно часть огики в Table засунуть, что связана с сохранением связей
Artem
А, не, спутал, там AdminModel метод этот имеет, но суть та же
$this-table не? Из него получить можно все поля, которые забиндил и id, который установился
Pavel
$this-table не? Из него получить можно все поля, которые забиндил и id, который установился
Пробежался по коду, вроде не работает. Там $this->getTable() Каждый раз новый объект создает вызывая $this->getMVCFactory()->createTable($name, $prefix, $config)
Pavel
Всем спасибо! Буду мозговать и пробовать, Франкенштейн получается, однако) Уже туда часть трейтов из eloquent утащил для работы с БД, понасилую ещё 😀
Дмитрий
а
Дмитрий
да
Дмитрий
точно
Дмитрий
ты прав
Artem
есть
в админской модели - да. в форммодэл - нет. Нужно самому реализацию писать
Дмитрий
они в AdminModel
Дмитрий
они отделили Form чисто типа для формы только
Дмитрий
нахер только форма без сохранений нужна не извествено в виде модели
Дмитрий
точно, я сам наследуюсь от adminmodel
Дмитрий
у джумлы беда вообще с этим
Дмитрий
я глупый был и написал свой вспомогатор
Дмитрий
и ошибся, он кривой получился
Pavel
Ну любой вспомогатор лучше, чем его отсутствие)
Дмитрий
Ну любой вспомогатор лучше, чем его отсутствие)
ORMHelper::update('notifications', 'user_id', ['user_id' => 33, 'message' => 'Уведомление прочитано']);
Дмитрий
вот так
Дмитрий
надо было именно билдер сделать
Дмитрий
а не массивы кидать
Дмитрий
это самый главный просчет
Дмитрий
то есть когда именно класс сам себя крутит
Pavel
Ну в программировании так не бывает, чтобы сделал и потом не захотелось переделать)
Дмитрий
ты как оформляешь?
Дмитрий
как трейты?
Дмитрий
лучше как трейты
Дмитрий
и в модели их импортировать
Pavel
Да, как трейты. Я из eloquent забрал парчоку трейтов, один для мутаций, другой для связей hasOne, belogsTo и т.д. Там получается когда мы получаем объект, то присваиваем ему класс расширяющий CMSObject: $properties = $table->getProperties(1); $value = ArrayHelper::toObject($properties, Person::class); На этом классе висят трейты.
Pavel
Вот эта конструкция позволяет обратиться к связи $person->network
Pavel
Но там все очень сыро
Pavel
Поэтому пока нечего показывать
Дмитрий
надо как в зенде поступать
Дмитрий
надо все поля прописывать руками
Дмитрий
там просто на вычитку идет еще ресурсы
Дмитрий
и порождение table при save когда идет, жут ькороче там
Pavel
у них класс table писец
У Джумла или Eloquent?
Дмитрий
Pavel
у джумлы
Ну я поэтому не стал сам Table насиловать, не хочу его объект в бизнес логику передавать, поэтому и сделал этотпромежуточный класс Person::class
Дмитрий
и модели должны друг друга вызывать
Дмитрий
а что внутри должно быть скрыто
Pavel
Ну да. Получется человек в бизнес логике обращается к $person->network И даже не задумывается откуда это взялось
Pavel
И прописывать связи удобно, методом из одной строчки: public function network() { return $this->belongsTo(NetworkTable::getName()); }
Дмитрий
а ты кстати следуешь джумле? в том плане, что валидация в контроллере идет?
Дмитрий
это ведь ошибка их
Дмитрий
джумловодов
Pavel
Ну вот как раз сейчас это место делаю и меня это конечно коробит. А вдруг данные не с контроллера придут