@symfony_php

Страница 234 из 1418
Big_Shark
15.06.2017
23:59:52
Но мне кажется тут еще от типов аргументов зависит, и от сколько из них реквайред

Sergey
15.06.2017
23:59:52
не сильно много времени на это уходит, а профит заметный

это чуть удобнее фабрик или DTO голых

Google
Sergey
16.06.2017
00:00:34
но да, бывают нюансы

к слову может плагин для шторма реально написать....

Big_Shark
16.06.2017
00:02:46
@fes0r спасибо, пойду дальше мучать код

Sergey
16.06.2017
00:03:04
последний кусочек кода

Jan
16.06.2017
00:04:16
@fes0r а как ты реализовал доменные события и их обработку?

Sergey
16.06.2017
00:06:43
trait DomainEvents { private $events; protected function remember(DomainEvent $event) { $this->events[] = $event; } public function releaseEvents(): array { [$events, $this->events] = [$this->events, []]; return $events; } }

а дальше как обычные ивенты.

Jan
16.06.2017
00:08:05
У тебя собственный UoW?

Sergey
16.06.2017
00:08:07
просто некоторые в очередь скидываю

Jan
16.06.2017
00:08:41
Ну, я понял, что доктрина. Просто я еще не постиг дзен её внутренностей.

Sergey
16.06.2017
00:08:55
$uow->getIdentityMap() если я правильно помню

Google
Sergey
16.06.2017
00:13:13
доктрина штука относительно простая в этом месте

там вся сложность с проксями, гидрацией и прочей магией

вот там реально без пол литра не разберешься

а общие принципы - в целом норм

Ad
16.06.2017
09:43:35
Добрый день. Подскажите, пожалуйста, а можно как-то делать оптимизацию изображения по его URL? То есть я делаю вот так для стандартного вывода в твиге: <img class="article-image" src="{{ image(article.thumb.src).resize(700).jpeg('85') }}" title="{{ article.thumb.title }}" class="img-responsive"> можно ли как-то туда подставить URL просто?

Я понимаю, что теоретически я могу в контроллере распарсить, и передать отдельной переменной, но может другие варианты есть?

Dinar
16.06.2017
09:46:35
Ресайзи при загрузке :)

Либо кешируй.

Ad
16.06.2017
09:47:35
Либо кешируй.
Вот по поводу второго можно подробнее?

Кэшировать вроде как и так кэширую.

Dinar
16.06.2017
09:48:16
А тебе надо именно чтобы линк был?

Тогда сделай экшн, в котором сделаешь ресайз, но сам экшн закешируй.

И все. Пропиши урол на этот экшн.

Ad
16.06.2017
09:49:27
А тебе надо именно чтобы линк был?
проще говоря у меня текст статьи. Народ в него пихает картинки, кто в PNG размером в тыщу метров, кто что. Я пытаюсь это дело загнать и проресайзить.

Dinar
16.06.2017
09:49:33
Я правда не знаю, зачем такая сложность, если можно просто ресайзнуть сразу при загрузке. Или места мало?

А при пихании не ресайзится?

Ad
16.06.2017
09:50:05
При пихании не ресайзится.

Dinar
16.06.2017
09:50:41
Так ты же его принимаешь. Сделай ресайз при принятии картинки

Ad
16.06.2017
09:51:16
Не могу, оно сторонней фигнёй пихается.

Dinar
16.06.2017
09:51:44
А сторонняя фигня - это что?

Google
Ad
16.06.2017
09:51:52
В голову приходит только идея менять на лету URL'ы на что-то типа '/optimize?domain.com/images/huy.jpg'

А сторонняя фигня - это что?
это вот такая: http://www.responsivefilemanager.com/

То есть он напрямую URL вставляет, и всё, на этом его работа заканчивается.

Dinar
16.06.2017
09:53:49
Просто ты же понимаешь, что фронтэнд твой файл не кладет в ФС. Ты его на бэкэнде принимаешь где-то.

Ad
16.06.2017
09:54:22
ну как бы да. но на бэкэнде просто текст статьи прилетает. возможно, надо процессить именно перед загрузкой в базу

Но как тогда будет работать ассетик этот? загадки...

Dinar
16.06.2017
09:54:37
Но ты название файла присылаешь с Бэкэнда.

он до загрузки его знать не может.

Либо он продублирован на фронте

Ad
16.06.2017
09:55:52
Может натурально, менять регэкспом картинки на /resize.... а по этому адресу их автоматом ресайзить? Хотя стоп, так все равно ассетик не сработает

И в кэш не положится.

Dinar
16.06.2017
09:58:31
Я бы смотрел в сторону бэкэнда.

Dinar
16.06.2017
09:58:35
Там все должно быть.

Ad
16.06.2017
09:59:43
Вопросы, вопросы...

Dinar
16.06.2017
10:00:17
Просто изучи этот плагин. Посмотри доку.

Ad
16.06.2017
10:02:23
Просто изучи этот плагин. Посмотри доку.
Хорошо, тогда сформулирую по-другому. В контроллере на бэкэнде у меня есть URL. Могу ли я его как-то сконвертировать в объект и передать во фронт, чтобы там его обработать средствами assetic?

{% image '@AppBundle/Resources/public/images/example.jpg' filter='jpegoptim' output='/images/example.jpg' %} <img src="{{ asset_url }}" alt="Example"/> {% endimage %} Теоретически, вот если бы у меня была возможность подставить вместо @AppBundle/Resources/public/images/example.jpg свой URL (или просто указать свой бандл и путь, сработает? то это бы решило проблему.

Наполовину.

Но блин, делать это для каждого изображения... а вдруг PNG? А вдруг гиф?

В принципе, читаю сейчас доку по вот этому, может быть оно мне поможет на уровне контроллера решить. https://github.com/Gregwar/ImageBundle

Google
Andrew
16.06.2017
10:32:47
В принципе, читаю сейчас доку по вот этому, может быть оно мне поможет на уровне контроллера решить. https://github.com/Gregwar/ImageBundle
https://github.com/liip/LiipImagineBundle еще посмотри. Некоторые ругаются, у нас она работает как часы

Ad
16.06.2017
10:33:34
https://github.com/liip/LiipImagineBundle еще посмотри. Некоторые ругаются, у нас она работает как часы
Смотрю. Столкнулся все равно с тем, что мне надо каким-то образом процессить ВСЕ <img src ... > в тексте статьи: я не могу выдирать по одному.

Потому что иначе получится - вот я выдрал первое, оптимизировал, вывел, а потом мне надо выкусывать это первое из текста, чтобы оно не получилось два раза

Но как это сделать - я без понятия от слова вообще.

Andrew
16.06.2017
10:35:34
можно повесить prePersist event, который у тебя будет парсить на тему img src и заменять сорс на нужный. Или на лету менять через dom crawler

наверное есть смысл делать через domcrawler

Ad
16.06.2017
10:36:31
можно повесить prePersist event, который у тебя будет парсить на тему img src и заменять сорс на нужный. Или на лету менять через dom crawler
вот второе у меня, в принципе, есть. $c = new HtmlPageCrawler($oneNews->getContent()); foreach ($c->filter('img') as $newsImg) { $newsImg = HtmlPageCrawler::create($newsImg); $newsImg->filter('img')->removeAttribute('style'); $newsImg->filter('img')->removeAttribute('width'); $newsImg->filter('img')->setAttribute('alt', $oneNews->getTitle()); $newsImg->filter('img')->addClass('img-responsive img-pim center-block thumbnail'); $newsImg->filter('img')->wrap('<a href="' . $newsImg->filter('img')->getAttribute('src') . '" data-toggle="lightbox" data-title="' . $oneNews->getTitle() . '">'); } $oneNews->setContent(mb_convert_encoding($c->saveHTML(), 'UTF-8', 'HTML-ENTITIES'));

Получается, что остаётся просто туда ресайз запихать.

Admin
ERROR: S client not available

Andrew
16.06.2017
10:37:32
ресайз будет при первом запросе к тому урлу

Alex
16.06.2017
10:39:07
ресайз on demand, по-взрослому. Причем размеры требуемые можно передавать в URL-е, а ресайзить с помощью nginx

Andrew
16.06.2017
10:39:34
тут еще @fes0r кидал ссылку на альтернативное решение - микросервис на го для ресайза, не могу найти

Alex
16.06.2017
10:40:18
URL или nginx конфигурация?

Ad
16.06.2017
10:40:53
Вообще пока не допираю. Смотри выше - вот у меня домкраулер получает и проходит в фориче все img src

Dinar
16.06.2017
10:40:58
Проблема простая. решение простое.

Зачем городить какие-то микросервисы?

Вы же не Гугл, как в статье говорится одноименной :)

Google
Dima
16.06.2017
10:43:52
день добрый, мож подскажет кто как настроить EAGER_FETCH для dev и test окружения, во время дебага наблюдать пустые коллекции вложенных энити уже обрыдло. Самостоятельно не нагуглилось

Sergey
16.06.2017
10:45:59
например с какой целью тебе это вообще смотреть?

нельзя ли воспользоваться возможностью выполнять выражения в xdebug

что бы инициализировать коллекцию

а так - делать разное поведение в зависимости от окружения - плохая идея, очень плохая

Dima
16.06.2017
10:54:55
а так - делать разное поведение в зависимости от окружения - плохая идея, очень плохая
Можно пару слов почему плохая (время исполнения?) и где найти гайд по упомянутому шикарному способу "заглянуть поглубже" ? :)

Dinar
16.06.2017
10:58:56
Можно пару слов почему плохая (время исполнения?) и где найти гайд по упомянутому шикарному способу "заглянуть поглубже" ? :)
Потому что если они работают по разному на деве и на проде - это потенциально место для багов и серьезных проблем.

Ivan
16.06.2017
11:15:44
+ ещё смотреть $_REQUEST['XDEBUG_SESSION'] или $_ENV['XDEBUG_CONFIG'] как условие для FETCH_EAGER

Sergey
16.06.2017
11:15:56
Можно пару слов почему плохая (время исполнения?) и где найти гайд по упомянутому шикарному способу "заглянуть поглубже" ? :)
потому что тогда фраза "у меня локально работает" ничего не значит для багов в продакшене

ну и опять же - с eager load ты можешь потенциальных проблем не найти или наоборот словить то с чем проблем на самом деле нет

меньше вариаций - меньше боли

Ivan
16.06.2017
11:19:30
по postFlush собираю из сущностей
а может ли понадобиться обрабатывать события внутри транзакции?

или это плохо?

Sergey
16.06.2017
11:19:54
а может ли понадобиться обрабатывать события внутри транзакции?
если есть такая необходимость - это как правило не должны быть ивенты

а просто вызовы сервисов

Ivan
16.06.2017
11:20:08
так и подумал

Sergey
16.06.2017
11:20:30
ну то есть я реально как-то размышял на эту тему - в пределах бизнес транзакции все что дергается всеравно должно относиться именно к этой логике

и там неиболее явный способ лучше

Страница 234 из 1418