«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2020/08/17 15:03:53  №1779701 1
Собираюсь делать файловый хостинг на компонентах Symfony. Уже более-менее разобрался с http-kernel, httpd-foundation, dependency-injection, routing, twig. Что еще подтянуть можно? Цель - поверхностно пощупать symfony, чтобы иметь о нем какое-то представление, так как после этой задачи буду углубляться в ларавель. Наверное, стоит взять доктрину и symfony forms? Алсо, почитал доки Symfony Filesystem, подскажите пожалуйста в чем его смысл. Я увидел лишь копирование уже существующих, встроенных в пхп методов, под теми же названиями.
Ответы: >>1779728
Аноним 2020/08/17 15:34:41  №1779728 2
>>1779701
Если ты просто хранишь файлы на диске, то да это просто обертка над существующими методами.
Но как только ты решишь перенести свои картиночки на CDN или в AWS S3, то тебе придется переписать весь код сохранения. А в Symfony Filesystem есть готовая абстракция, и работа с файлами происходит всегда одинаково, вне зависимости от того где фалы хранятся.
Почитай вступление тут https://symfonycasts.com/screencast/symfony-uploads/flysystem
Ответы: >>1779919 >>1780928
Аноним 2020/08/18 19:12:54  №1780928 3
>>1779728
Спасибо за ответ, подтягивать не буду тогда. Symfony Forms тоже похоже что подтягивать не буду - с валидатором поиграться не выйдет особо, аякс не очень понятно как к этому делу прикузьмичивать, так еще и оказалось что компонент Translation к нему обязательный при использовании Twig.
Ответы: >>1780953
Аноним 2020/08/18 19:31:49  №1780953 4
>>1780928

> аякс не очень понятно как к этому делу прикузьмичивать

Вообще, тут ничего сложного нет. Тебе в аяксе надо:

- проставить в форму присланные значения
- вернуть список ошибок

Первое делается так:

$form->submit($data); где $data - массив значений

Можно проставлять значения отдельных полей хоть руками: $form->get('name')->submit('Ivan');

Второе делается обходом дерева формы и сбором ошибок через $form->getErrors(). Ошибки преобразуешь в нужный формат и отдаешь. Учти, что ошибки могут быть как в самой форме, так и в каком-то из ее элементов, потому надо обходить все дерево со всеми детьми.

Ответы: >>1781082
Аноним 2020/08/18 22:33:11  №1781082 5
image.png (27, 684x183)
183x684
>>1780953
Спасибо что подсказал, в принципе тогда не все так ужасно. Разбираюсь пока-что. Не понравились мне пикрил многоходовки для вычисления папки с темами для форм, добавил в композер скрипт, который копирует эту папку в нормальную директорию с шаблонами. Для файлов твиттер бутстрапа тоже такое сделал. Нормальная практика? Не особо хочется важные файлы, к которым я прямо обращаюсь, в закоулках vendor держать. Наверное, эти папки еще нужно прописать в .gitignore?

И еще вопросик:
Можно ли как-то прямо в yaml-файле DI-контейнера Symfony создавать сервисы не через конструкторы, а с помощью статических методов? А то приходится разделять создание сервисов на две части, не очень красиво получается.
Ответы: >>1781944
Аноним 2020/08/19 14:37:55  №1781944 6
>>1781082

> Не понравились мне пикрил многоходовки для вычисления папки с темами для форм

Код выглядит странно, конечно. Ты можешь вместо него руками прописать путь к папке, найди где они лежат и пропиши. Копировать файлы, наверно, все же не стоит.

Бутстрап копировать можно, если ты его установил через композер.

> Можно ли как-то прямо в yaml-файле DI-контейнера Symfony создавать сервисы не через конструкторы, а с помощью статических методов?

Можно, https://symfony.com/doc/current/service_container/factories.html

Также, обрати внимание на autowiring, он позволяет минимизировать размер конфига.


Ответы: >>1785933
Аноним 2020/08/23 19:52:41  №1785933 7
image.png (20, 644x257)
257x644
>>1781944 →
Спасибо. Насчет autowiring, он точно должен работать на компонентах? Читал о нем еще в твоем гайде по DI, но даже не пытался реализовать, т.к. был уверен что это лютейшая магия, работающая только на полном symfony. Сейчас вот попытался сделать как на пике, но что-то параметры в конструкторы не пробрасываются. Даже на новом голом тестовом проекте с одним лишь DI пробовал, всё равно безуспешно. Больше я бы, конечно, удивился, если бы оно работало.
Ответы: >>1792961
Аноним 2020/08/30 15:03:18  №1792838 8
$_SESSION это надежная хуйня? Юзверь не может никак подменить ее переменные?
Ответы: >>1792946 >>1792961
Аноним 2020/08/30 17:16:53  №1792961 9
>>1792838

Не может, так как данные сессии хранятся в файле на сервере, а у юзера в куке хранится только идентификатор (из которого получается имя) файла.

>>1785933

По идее должен работать как описано в мануале (либо выдавать ошибку с конкретным указанием проблемы).