Aleksei
:)
Danil
В контроллерах
Aleksei
http://symfony.com/doc/current/doctrine/repository.html
Aleksei
вот так сделайте
Alexey
Дмитрий
тут ты прав, затупил :)
Alexey
Статический анализ не всегда справляется с определением типов, поэтому докблоки помогают. Да и вообще, докблоки - правило хорошего тона. По ним и документацию генерить можно потом.
Ivan
кто-нибудь сталкивался с созданием слагифайре с китайского на инглиш? )) транслит, в общем
Aleksei
жоско :)
Ivan
проще запретить вбивать иероглифы наверное) пусть названия латиницей вбивают:)
Aleksei
[a-zA-Z0-9_\-]
Ivan
Ага, две проверки, на клиенте и сервере. Ну и русский добавочно. Кстати, на симфони есть какие-нибудь решения для, чтобы не дублировать валидацию в двух местах?
Aleksei
мм, ну вообще можно это все описать, если расширить формы
Aleksei
но я чот такого не встречал
Дмитрий
Ivan
верно
Aleksei
всё таки только выборки
Aleksei
insert\update нужно делать не в репозитории
Danil
Только репозиторий у тебя сразу есть, создавать его отдельно не придется, если ты все делаешь через Symfony Plugin в PHPStorm или консоль
Дмитрий
ну я его сделал через консоль
php bin/console doctrine:generate:entities Bundle
Дмитрий
Aleksei
в сервисе
Aleksei
у вас должен быть тонкий контроллер
Дмитрий
ох
Aleksei
ну для начала можете в контроллере
Aleksei
:)
Дмитрий
зачем все так запутано, почему нельзя с данными работать в одном классе
Aleksei
а когда начнете делать большой проект -- поймете
Ivan
хз, я в репозитории работаю
Дмитрий
вот и готовлюсь к большому проекту и сказали его делать именно на симфони
Ivan
а что значит insert\update в сервисе? для чего? есть пример?
Aleksei
вообще да, я прогнал
Aleksei
фигачить все в репозиторий
Aleksei
перечитал патерны :(
Aleksei
простите за смуту
Aleksei
никому нельзя верить
Ivan
паттерны та ещё мозговзрывная смесь:)
Дмитрий
:)
Aleksei
http://martinfowler.com/eaaCatalog/repository.html
Danil
Я долго пытался понять назначения паттерна репозиторий, бросил книгу короче и стал ложиться спать
За секунду перед сном у меня появилось чувство падения и в эту секунду я реально осознал зачем это нужно
Danil
Вот реально
Danil
Пока читал не понимал
А как начал засыпать резко дошло до меня
Danil
Озорение
Danil
Только так можно понять паттерны
Ivan
Ну да, полученную иформацию ещё нужно хорошенько прочувствовать и прожевать)
Danil
Чтобы понять паттерны надо выйти за рамки обыденного представления мира
Danil
Открыть 3 глаз
Danil
И так далее
Danil
Или просто на своей жопе испытать
Ivan
ну это без порно) другое дело, что доп. сервисов для работы с данными не нужно
Дмитрий
Ребята подскажите как правильно по феншуй реализовать такую штуку.
В разных бандлах надо получать информацию по годам и номерам недель записанных в таблице. Т.е. строить фильтр. Структура фильтра одинаковая, но только строится по данным разных таблиц.
Я думаю что нужен отдельный контроллер, который получает необходимые параметры и возвращает готовый фильтр. НАдо ли для этого контроллера прописывать маршруты чтобы его можно было вызвать из другого контоллера или все это дело надо оформлять в виде сервиса?
Aleksei
делай сервис
Kirill
да. вызывать маршруты контроллера из другого контроллера, не надо так
Дмитрий
спасибо за помощь.
Из контроллера вызываю службу, ответ получаю.
Есть какие-то особенности при обращении к БД из службы?
Попробовал написать так же как и основном контроллере
$repository = $this->getDoctrine()->getRepository('NVBSAccidentBundle:Accident');
в ответ получил
Error: Call to a member function has() on null
В классе службы указал use NVBS\AccidentBundle\Entity\Accident;
Aleksei
на другую строку явно ругается
Aleksei
has у тебя нет в этой строке
Дмитрий
так кроме этой строки больше ничего и нет, если ее за комментить то все выполняется
Danil
В методе getDoctrine вроде должен быть has, который вызывается от контейнера
Danil
Или get
Danil
$this-get('service_name')
Danil
Короче мне кажется че то не так с контейнером, а точнее тем, откуда он запрашивается
Danil
А
Danil
Сек
Danil
Погоди
Danil
Служба == Сервис?
Дмитрий
ага
Danil
Ну так откуда у тебя там будет метод getDoctrine??
Danil
getDoctrine есть у базового класса контроллеров
Danil
Тебе в сервис нужно передать EntityManager
Дмитрий
Спасибо, заработало
Aleksei
в дефолте нет
Aleksei
брр
Aleksei
наоборот, ты можешь сделать контроллер сервисом
Danil
Мне кажется ты путаешься в определении контроллера
Aleksandr
в сервис лучше засовывать репозиторий
Aleksandr
контроллер - сервис - репа - сущность
Ivan
Господа, есть контроллер с префиксом. Допустим
/**
*@Route("/admin/article", name="admin")
*/
controller Article() {
/**
*@Route('/show', name="article_show")
*/
public function showAction() {}
}
Есть ли возможность вызвать в шаблоне path("admin_article_show") или как-то так? В общем, чтобы не писать на каждый экшн Route(..., name="admin_article_show"). Возможно есть подход через конфиги и не я в ту степь копаю.
Alexey
В чём проблема с описанием роутинга для экшенов?
Конечно, ты можешь генерировать их автоматически, но это редко оправданно.