@symfony_php

Страница 363 из 1418
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
вообще mysql позволяет, но есть сомнения что symfony будет ошибки бросать
symfony никакие ошибки бросать не будет, потому что к БД никакого отношения не имеет. Доктрина отвечает за коннекты к БД и подключаться к удаленному мускулю она умеет ровно так же как PDO.

вопрос - а как решается такой кейс? К примеру, есть грид с данными и нужно к каждой строке добавить кнопку удаления. По хорошему, каждая такая кнопка - это должна быть форма с 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
положить в head <meta name="csrf-token" id="token" content="R9KuTK6AJlfI1vJPQvGraEVJU1BCdveVTFwKhEJw"> и jquery подбирать его
Я обычно делал одну форму с csrf на всю страницу, и в зависимости от нажатой кнопки менял пару парамтров JS-ом, и отпраялял эту форму

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

Google
Антон
27.10.2017
14:09:33
не использовать csrf?)
имхо плохая идея

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
так и по отдельности не работает
у тебя там дублированый route name 'categories` - https://github.com/symfony/symfony/issues/12561

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

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



Andrew
27.10.2017
14:50:32
ок, как прописать роуты для симфони-компонента роутинг? Рабочий пример из backbone
да так же как ты и писал только переименуй второй categories на categories_page или что-то подобное

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
здравствуйте. Что такое cascade persist?)
идешь в документацию и читаешь

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
в википедии непонятные слова. Тяжело быть гумантарием(
у меня тут под боком сидит выпускник иняза который за год умных технических слов знает побольше меня (и понимает конечно). Так что все это отговорки и лень

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

Константин
27.10.2017
17:52:14
$data = $repo->find(new PremiumUsersQuery());
Я так понимаю это как маленькая спецификация?

Arky
27.10.2017
17:52:29
если нашёл непонятное слово - идешь дальше по Википедии и снова ищешь
Будет огромная ветка непонятных слов. И я даже забуду откуда начинал (

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

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
но задумайся вот о чем - ты работаешь с нормализованной базой, структурой которая оптимизирована на запись... но не на чтение

и возможно выборкам в духе "достать список пользователей" нечего делать в репозиториях

но из того что есть - пока удобного я ничего не видал

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