
vlad
27.10.2017
12:55:28
ребят, есть ман по подключению symfony к удалённой базе данных?
и возможно ли так сделать в принципе?
т.е. БД крутится на одном сервере, а со второго надо к ней цепануться
вообще mysql позволяет, но есть сомнения что symfony будет ошибки бросать

Google

Andrey
27.10.2017
12:56:13
в настройках подключения ты же указываешь хост, порт, credentials
точно с тем же успехом заменяешь localhost на another_domain.com

vlad
27.10.2017
12:57:08
хорошо, буду тогда пробовать
спасибо

Andrew
27.10.2017
13:10:47
вопрос - а как решается такой кейс? К примеру, есть грид с данными и нужно к каждой строке добавить кнопку удаления. По хорошему, каждая такая кнопка - это должна быть форма с POST|DELETE методом и CSRF-токеном. Как решаете такую задачу? Забить и сделать линк? Создавать формы на лету? Лепить форму динамически на клиенте при помощи jQuery и пробрасывать CSRF-токен?

Sergey
27.10.2017
14:04:05
не использовать csrf?)

Антон
27.10.2017
14:07:08
положить в head <meta name="csrf-token" id="token" content="R9KuTK6AJlfI1vJPQvGraEVJU1BCdveVTFwKhEJw">
и jquery подбирать его

Dmitriy
27.10.2017
14:07:25
да.. жсом разруливать

$iD
27.10.2017
14:08:05
а почему нельзя сделать одну форму с CollectionType? и там воткнуть кнопку.
тут скорее нужно понять как тебе надо делать... удалять сразу по клику или же глобально сабмитить

Владимир
27.10.2017
14:08:34

Антон
27.10.2017
14:08:50
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[id="token"]').attr('content')
}
});
вот так еще можно объявить чтобы автоматом

$iD
27.10.2017
14:09:10

Google

Антон
27.10.2017
14:09:33

Andrew
27.10.2017
14:11:17
тут вопрос даже не в CSRF а в том, делать форму на лету на бэке, делать форму на лету на фронте или забить на то что линки должны быть идемпонентными

Art
27.10.2017
14:34:44
сейчас знакомлюсь с компонентами симфони. Почеу не работает второй вариант?
$routes->add('categories', new Routing\Route('/categories/{category}', array('category' => 'telephone')));
$routes->add('categories', new Routing\Route('/categories/{category}/page/{page}', array('category' => 'telephone', 'page' => 1)));

Andrew
27.10.2017
14:38:33
остановился в итоге на TwigExtension и буду там конкатенировать plain html. Самое простое решение и легко аяксифицируется. Плюс progressive enhacement, все дела

Art
27.10.2017
14:40:16
так и по отдельности не работает
categories/{category} - работает, а дальше идет

Andrew
27.10.2017
14:41:02
кто идет куда?

Art
27.10.2017
14:41:25
'/categories/{category}/page/{page}' не срабатывает

Andrew
27.10.2017
14:42:30
не, плохая issue, эта лучше - https://github.com/symfony/symfony/issues/12561

Art
27.10.2017
14:46:37
ок, как прописать роуты для симфони-компонента роутинг? Рабочий пример из backbone

Andrew
27.10.2017
14:50:32

Art
27.10.2017
15:00:32
совсем забыл про htaccess, туда и в скрипт шаблоны прописывать?

Arky
27.10.2017
15:53:55
здравствуйте. Что такое cascade persist?)

Sergey
27.10.2017
15:55:36
когда делаешь на одной сущности persist, то на вложенных автоматически тоже будет persist

Vladislav
27.10.2017
15:56:31
http://bfy.tw/EiPU
вот

Sergey
27.10.2017
16:25:47

Google

Константин
27.10.2017
16:46:15
Кто нибудь реализовывал репозитории, где каждый query - отдельный класс? То есть, есть агрегирующий FooRepository, которому все запросы связанные с Foo приходят как lazy зависимости, а он в них проксирует запросы? Типа Single Responsibility и тд

Sergey
27.10.2017
17:13:03
lazy зависимости? чта?
> Типа Single Responsibility и тд
ты можешь на самом деле добиться того же разделив интерфейс своего репозитория.
типа ISP
я пробовал так делать... мне идея до сих пор нравится но мне не нравится как я ее реализовал
если дополнить это спецификациями - выходит относительно интересно

Константин
27.10.2017
17:18:03
lazy зависимости? чта?
Ну чтобы контейнер не передавал все объекты вместе с зависимостями, а свои обёртки для lazy load

Sergey
27.10.2017
17:18:17
ммм
ты про double dispatch?
пример кода короч

Константин
27.10.2017
17:19:01
https://symfony.com/doc/current/service_container/lazy_services.html

Константин
27.10.2017
17:19:09
Я возможно маленько заблуждаюсь)

Sergey
27.10.2017
17:19:12
ммм запросы как сервисы - рак
+ еще если ты по SOLID решил загнаться, есть два важных принципа которые многие игнорируют:
- Принцип отсутствия циклических зависимостей
- Принцип стабильных зависимостей
- Принцип инверсии зависимостей

Константин
27.10.2017
17:21:44
Просто надоело видеть репозитории на 1000 строк. Так бы каждый запрос в своём отдельном файле..
Ну ок, если сервисы рак, можно инжектить в них entity manager и только, к примеру..
Инжектить обёрткой, а не контейнером
У нас сейчас вот такая дичь есть, на зачатках такого репозитория

Google

Константин
27.10.2017
17:27:21
Думал через __call() это сделать, чтобы $repository->{queryName)(). С автокомплитом в ide только гемор, phpdoc добавлять на каждый query тоже такое себе решение

Sergey
27.10.2017
17:43:48
ммм....
неверный подход
interface DirectoryRepository
{
public function find(QueryCollection $query): array;
public function findOne(Query $query): array;
}
вот так в этом есть смысл
а так тебе фолдинг в IDE поможет больше
сами же запросы можно сделать так
interface QueryCollection
{
public function buildQuery(QueryBuilder $qb);
}

Admin
ERROR: S client not available

Sergey
27.10.2017
17:45:46
ну и в клиентском коде будет что-то типа
$data = $repo->find(new PremiumUsersQuery());

Arky
27.10.2017
17:46:02

Sergey
27.10.2017
17:46:15
непонятные слова - википедия

Arky
27.10.2017
17:49:24

Sergey
27.10.2017
17:49:58

Arky
27.10.2017
17:50:48

Bohdan
27.10.2017
17:51:03
если нашёл непонятное слово - идешь дальше по Википедии и снова ищешь

Константин
27.10.2017
17:52:14

Arky
27.10.2017
17:52:29

Google

Andrew
27.10.2017
17:52:32
Документация симфы на вполне доступном английском написана, доктриновская чуть сложнее, но там и концепции другие и нет Раяна

Arky
27.10.2017
17:53:35

Bohdan
27.10.2017
17:56:16
в программировании без этого никак, извини
да и вообще английский - это полезно

Arky
27.10.2017
17:58:21
Да я прост не знаю что такое каскад)
гугл бессилен(

Vladislav
27.10.2017
18:10:28
http://alittlebit.ru/upload/iblock/986/25b1e639408439fbb12c9129db141ac0.jpeg

Константин
27.10.2017
20:17:40

Nik
27.10.2017
22:13:07
тоже было бы интересно почитать.. уже давно задумался о таком подходе
Где про это почитать можно?

Dmitry
27.10.2017
22:16:33
Репозиторий, Спецификация
Выше ссылку на реализацию спецификации давали
https://github.com/Happyr/Doctrine-Specification

Sergey
27.10.2017
22:20:14

Dmitry
27.10.2017
22:21:06
ну на самом деле по приведенной ссылке тоже не совсем спецификация, если брать "по Фаулеру"

Sergey
27.10.2017
22:21:09
но задумайся вот о чем - ты работаешь с нормализованной базой, структурой которая оптимизирована на запись... но не на чтение
и возможно выборкам в духе "достать список пользователей" нечего делать в репозиториях
но из того что есть - пока удобного я ничего не видал