@symfony_ru

Страница 11 из 138
Ivan
01.11.2016
11:28:32
я

Daniel
01.11.2016
11:28:50
М

Я видел как в sublime подрубали PHP Annotations

Дмитрий
01.11.2016
11:31:47
подскажите тогда, в настройках проекта в PHP указал framework папку vendor. Классы, методы подставлются, но сейчас учусь работать с БД и делаю как в примере $repository = $this->getDoctrine()->getRepository('NVBSAccidentBundle:Kpiform'); $query = $repository->createQueryBuilder('p') ->where('p.year = ' . $year) ->orderBy('p.week', 'DESC') ->getQuery(); $week = $query->getResult(); createQueryBuilder и getResult phpstorm выделяет - метод не найден. Может я должен был еще что-то подключить?

Google
Дмитрий
01.11.2016
11:32:06
запрос выполсняется

Aleksey
01.11.2016
11:32:40
надо указать какой тип $repository

в docblock

->where('p.year = ' . $year) — так не делайте

andWhere('p.year = :year')->setParameter('year', $year)

Дмитрий
01.11.2016
11:33:51
в docblock
а поподробнее, что за docblock

Aleksey
01.11.2016
11:33:58
и для $query тоже указать тип

Дмитрий
01.11.2016
11:34:13
что-то все так сложно :)

Daniel
01.11.2016
11:34:41
Потом будет DQL + RSM

Aleksey
01.11.2016
11:35:18
https://phpdoc.org/docs/latest/guides/docblocks.html

Дмитрий
01.11.2016
11:35:40
что за типы надо указать, в документации что-то про это ничего нет http://symfony.com/doc/current/doctrine.html

Aleksey
01.11.2016
11:35:46
а плагин symofny подключен?

классы

Google
Aleksey
01.11.2016
11:36:01
то что возвращает метод

Daniel
01.11.2016
11:37:03
Да и вроде репозитории созданы чтобы не делать так: $repository = $this->getDoctrine()->getRepository('NVBSAccidentBundle:Kpiform'); $query = $repository->createQueryBuilder('p')

Aleksey
01.11.2016
11:37:28
:)

Daniel
01.11.2016
11:37:38
В контроллерах

Aleksey
01.11.2016
11:38:57
http://symfony.com/doc/current/doctrine/repository.html

вот так сделайте

Дмитрий
01.11.2016
13:20:20
тут ты прав, затупил :)

Алексей
01.11.2016
13:22:29
Статический анализ не всегда справляется с определением типов, поэтому докблоки помогают. Да и вообще, докблоки - правило хорошего тона. По ним и документацию генерить можно потом.

Ivan
01.11.2016
13:33:12
кто-нибудь сталкивался с созданием слагифайре с китайского на инглиш? )) транслит, в общем

Aleksey
01.11.2016
13:38:37
жоско :)

Ivan
01.11.2016
13:40:01
проще запретить вбивать иероглифы наверное) пусть названия латиницей вбивают:)

Aleksey
01.11.2016
13:40:38
[a-zA-Z0-9_\-]

Ivan
01.11.2016
13:42:49
Ага, две проверки, на клиенте и сервере. Ну и русский добавочно. Кстати, на симфони есть какие-нибудь решения для, чтобы не дублировать валидацию в двух местах?

Aleksey
01.11.2016
13:44:36
мм, ну вообще можно это все описать, если расширить формы

но я чот такого не встречал

Дмитрий
01.11.2016
13:58:27
Да и вроде репозитории созданы чтобы не делать так: $repository = $this->getDoctrine()->getRepository('NVBSAccidentBundle:Kpiform'); $query = $repository->createQueryBuilder('p')
Т.е. необходимо делать repository класс в котором делаю все операции с таблицей и возвращаю результат в контролер? контроллер не должен знать что и как там происходит с данными, правильно?

Ivan
01.11.2016
13:58:46
верно

Aleksey
01.11.2016
13:59:05
всё таки только выборки

insert\update нужно делать не в репозитории

Google
Daniel
01.11.2016
13:59:24
Только репозиторий у тебя сразу есть, создавать его отдельно не придется, если ты все делаешь через Symfony Plugin в PHPStorm или консоль

Дмитрий
01.11.2016
14:00:31
ну я его сделал через консоль php bin/console doctrine:generate:entities Bundle

Aleksey
01.11.2016
14:02:20
в сервисе

у вас должен быть тонкий контроллер

Дмитрий
01.11.2016
14:02:34
ох

Aleksey
01.11.2016
14:02:46
ну для начала можете в контроллере

:)

Дмитрий
01.11.2016
14:03:46
зачем все так запутано, почему нельзя с данными работать в одном классе

Aleksey
01.11.2016
14:04:08
а когда начнете делать большой проект -- поймете

Ivan
01.11.2016
14:04:13
хз, я в репозитории работаю

Дмитрий
01.11.2016
14:04:34
вот и готовлюсь к большому проекту и сказали его делать именно на симфони

Ivan
01.11.2016
14:05:23
а что значит insert\update в сервисе? для чего? есть пример?

Aleksey
01.11.2016
14:06:27
вообще да, я прогнал

фигачить все в репозиторий

перечитал патерны :(

простите за смуту

никому нельзя верить

Ivan
01.11.2016
14:07:05
паттерны та ещё мозговзрывная смесь:)

Дмитрий
01.11.2016
14:07:54
:)

Google
Aleksey
01.11.2016
14:09:06
http://martinfowler.com/eaaCatalog/repository.html

Daniel
01.11.2016
14:36:22
Я долго пытался понять назначения паттерна репозиторий, бросил книгу короче и стал ложиться спать За секунду перед сном у меня появилось чувство падения и в эту секунду я реально осознал зачем это нужно

Вот реально

Пока читал не понимал А как начал засыпать резко дошло до меня

Озорение

Только так можно понять паттерны

Ivan
01.11.2016
14:37:27
Ну да, полученную иформацию ещё нужно хорошенько прочувствовать и прожевать)

Daniel
01.11.2016
14:40:52
Чтобы понять паттерны надо выйти за рамки обыденного представления мира

Открыть 3 глаз

И так далее

Или просто на своей жопе испытать

Kirill
01.11.2016
18:13:43
фигачить все в репозиторий
репозиторий - это тоже сервис)

Ivan
01.11.2016
18:15:30
ну это без порно) другое дело, что доп. сервисов для работы с данными не нужно

Дмитрий
02.11.2016
08:19:11
Ребята подскажите как правильно по феншуй реализовать такую штуку. В разных бандлах надо получать информацию по годам и номерам недель записанных в таблице. Т.е. строить фильтр. Структура фильтра одинаковая, но только строится по данным разных таблиц. Я думаю что нужен отдельный контроллер, который получает необходимые параметры и возвращает готовый фильтр. НАдо ли для этого контроллера прописывать маршруты чтобы его можно было вызвать из другого контоллера или все это дело надо оформлять в виде сервиса?

Aleksey
02.11.2016
08:24:23
делай сервис

Kirill
02.11.2016
08:27:10
да. вызывать маршруты контроллера из другого контроллера, не надо так

Дмитрий
02.11.2016
09:20:56
спасибо за помощь. Из контроллера вызываю службу, ответ получаю. Есть какие-то особенности при обращении к БД из службы? Попробовал написать так же как и основном контроллере $repository = $this->getDoctrine()->getRepository('NVBSAccidentBundle:Accident'); в ответ получил Error: Call to a member function has() on null В классе службы указал use NVBS\AccidentBundle\Entity\Accident;

Aleksey
02.11.2016
09:21:40
на другую строку явно ругается

has у тебя нет в этой строке

Дмитрий
02.11.2016
09:24:40
так кроме этой строки больше ничего и нет, если ее за комментить то все выполняется

Google
Daniel
02.11.2016
09:27:58
В методе getDoctrine вроде должен быть has, который вызывается от контейнера

Или get

$this-get('service_name')

Короче мне кажется че то не так с контейнером, а точнее тем, откуда он запрашивается

А

Сек

Погоди

Служба == Сервис?

Дмитрий
02.11.2016
09:29:06
ага

Daniel
02.11.2016
09:29:14
Ну так откуда у тебя там будет метод getDoctrine??

getDoctrine есть у базового класса контроллеров

Тебе в сервис нужно передать EntityManager

Дмитрий
02.11.2016
09:36:22
Спасибо, заработало

getDoctrine есть у базового класса контроллеров
разве сервис это не контроллер который наследуется от базового класса?

Aleksey
02.11.2016
09:43:42
в дефолте нет

брр

наоборот, ты можешь сделать контроллер сервисом

Daniel
02.11.2016
09:49:12
Мне кажется ты путаешься в определении контроллера

Aleksandr
02.11.2016
10:03:49
в сервис лучше засовывать репозиторий

контроллер - сервис - репа - сущность

Ivan
02.11.2016
13:38:29
Господа, есть контроллер с префиксом. Допустим /** *@Route("/admin/article", name="admin") */ controller Article() { /** *@Route('/show', name="article_show") */ public function showAction() {} } Есть ли возможность вызвать в шаблоне path("admin_article_show") или как-то так? В общем, чтобы не писать на каждый экшн Route(..., name="admin_article_show"). Возможно есть подход через конфиги и не я в ту степь копаю.

Страница 11 из 138