Alexey
https://symfony.com/doc/current/components/http_foundation.html#accessing-request-data
Alexey
$month = $request->query->get('month');
$year = $request->query->get('year');
Sergey
... хм
Alexey
Если хочется именно в маршруте - можно так, например:
path: /some/date/path/{year}/{month}
Co(n)stantine👨🔬
все верно
Alexey
Просто ты в маршруте определяешь путь к ресурсу.
И тут вопрос о том как именно сделать скорее в семантике.
Sergey
да вроде похоже
Sergey
А разделить на два маршрута не надо? /{year} отдельно, /{year}/{month} отдельно?
Alexey
Это зависит от твоих нужд, очевидно.
Если нужно - делишь. Если нет - не делишь :)
Sergey
попробую
Sergey
requirements:
methods: GET
year: \d+
month: \d+
Sergey
я правильно понимаю?
Alexey
Ну и на всякий случай. Тебе не нужно получать запрос из контейнера. Ты можешь просто в экшене указать с тайпхинтом что тебе нужен Request и Symfony тебе его заинжектит в этот экшен. Типа так:
public function someAction(Request $request, $somePlaceholder, $somePlaceholder2)
{
// ...
Alexey
Просто месяцев у нас пока что 12, а года в ближайшие 8000 лет, если ничего серьёзно религиозного не произойдёт, будут нумероваться четырьмя цифрами.
Alexey
Хотя это всё можно отдать на откуп БД и не париться, в принципе. У тебя там всё равно не найдётся данных за 98257 год :)
Sergey
да всё не так быстро) я только учусь
Sergey
кстати, а как удобней залить данные. у меня они в sql уже есть... правильно будет залить в базу и всё?
Alexey
Какие данные?
Sergey
я переписываю код, готовое приложение уже, с данными в sql. вот думаю как эти данные перекинуть
Alexey
Ты можешь использовать фикстуры. Или залить их первой миграцией, например, если их не очень много.
Alexey
Если из готового приложения - я бы написал команду-импортер.
Sergey
не много, примерно 800 кб
Alexey
Чтобы она коннектилась к старой БД, выбирала данные и заносила их в новую через сущности и Doctrine.
Alexey
Если это переезд - тут не фикстуры нужны. Я бы команду сделал.
Sergey
ну а последовательность - сначала приложение доделать, а уже потом миграцию писать?
Alexey
Можно и не доделывать. Достаточно определить сущности и настроить Doctrine. Команде-импортеру ведь не нужно готовое приложение, вероятно, для импорта данных.
Но т.к. у тебя мало опыта - возможно, стоит его сначала доделать по одной простой причине: ты можешь решить что-то переделать после того как уже импортировал данные и тогда тебе придётся либо делать миграции для данных, либо стирать данные, затем переписывать импортёр и снова их импортировать.
Alexey
Миграции в любом случае стоит использовать. Но уже на этапе доработки приложения. А пока ты его только разрабатываешь - они тебе могут быть не нужны.
Sergey
да да. благодарю за совет!
Sergey
ужас, смотреть на то, что писал пару лет назад
Alexey
И это хорошо.
Sergey
а где бы посмотреть для doctrine - select с двумя параметрами... у меня тут запрос такой SELECT .... WHERE MONTH(pdate) = ? AND YEAR(pdate) = ?
Alexey
А что смотреть-то? В чём вопрос?
Alexey
Кстати, для использования MONTH() и YEAR() в DQL тебе нужны будут DoctrineExtensions.
https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html
Alexey
Ну или чтобы не подключать целый бандл ради двух функций - можешь сам их написать.
Sergey
да надо подключить, пригодится
Aleserche
может не по адресу спрашиваю, но рискну. Какой js-фреймворк использовать для реализации очень простой админки? Есть resource api, на него нужно можно накидать
Aleserche
хочется что-нибудь простое, в ангулары и реакты нет времени вникать, да и не нужно это
Nikita
jQuery
Aleserche
я замучаюсь формы лепить
Sergey
что такое в doctrine ->select('b') ... название таблицы? или что это)
Sergey
в sql обычно SELECT * перечисление полей
Alexey
В DQL ты оперируешь не таблицами и полями, а сущностями и свойствами их. В данном случае b - это алиас какой-то сущности.
Alexey
Тебе сюда, короче:
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html
Alexey
> A common mistake for beginners is to mistake DQL for being just some form of SQL and therefore trying to use table names and column names or join arbitrary tables together in a query. You need to think about DQL as a query language for your object model, not for your relational schema.
Sergey
не пойму. уже и фикстуры сделал, загрузились, а ругается Key "type" does not exist as the array is empty - хотя есть
/**
* @ORM\Column(type="string")
*/
protected $type;
Sergey
вызываю в twig так= {% block title %}{{ desc.type }}{% endblock %}
Alexey
А ты уверен, что ты туда передал объект нужный, а не пустой массив? А то Twig тебе на массив ругается.
fink3L
Alexey
Нет, Twig сам подбирает геттер, если свойство не публично.
fink3L
Alexey
Он смотрит get и is.
Alexey
Это можно прочитать в доке Twig - там алгоритм прописан, в какой последовательности он всё перебирает. Что делает если это массив, что если объект.
Sergey
white screen of death
Alexey
fink3L
Sergey
WHERE (p0_.pdate) = ? AND (p0_.pdate) = ? ["2016","12"] /// это что, он пишет тут
Sergey
ладно, надо попроще запрос сделать)
Anonymous
Sergey
да... но тут сразу выборка за период, надо с датой ещё работать. начну с простого, по id из бд тянуть. А потом возможно для месяца - одну страницу где будут данные за этот месяц, для года - другую и так далее. от простого к сложному
Sergey
с sql проще, там есть YEAR, MONTH... а тут придётся поднапрячься
Anonymous
в pdate что находится?
Sergey
2016-12-23
Sergey
дата
Anonymous
не сработает выборка
Anonymous
LIKE только если
Sergey
да и так не пойдёт.
Sergey
$sql = "SELECT id, pdate, tovartype, tovar, kolvo, total
FROM pokupka WHERE MONTH(pdate) = ? AND YEAR(pdate) = ?";
Sergey
старый запрос
Sergey
вот его придётся потом обработать, он понимал 12 как месяц и 2016 как год
Sergey
Да да, я посмотрел, ужаснулся, но потом буду использовать. пока к этому иду!
Sergey
а как научить phpstorm не ругаться на Undefined namespace DataFixtures ... ?
Alexey
Настроить неймспейсы в проекте?
fink3L
Подскажите, правильно я понял? Если я оформляю форму как сервис, то createForm(class::class) в контроллере, сразу использует сервис формы.
fink3L
ну походу да, крутяк какой
Alexey
Alexey
Учитывая, что ты объявляешь форму как сервис (значит нужны зависимости), возможно, имеет смысл вызывать её конкретно по имени сервиса как показано в примере. То, что у тебя сработало по имени класса - скорее всего, спасибо автовайрингу.
fink3L
Alexey
Действительно, my bad.