
Dinar
23.08.2017
10:24:09
Тут в общем либо там тяжело либо тут. :)

Sergey
23.08.2017
10:24:20
и могу тебе сказать что в 90% люди будут пытаться прикрутить это к уже имеющемуся

Dinar
23.08.2017
10:24:28
Ну она заняла день два у тебя вначале. :)

Sergey
23.08.2017
10:24:50

Google

Sergey
23.08.2017
10:25:11
выносим это в бандл и реюзаем если хотим)

Dinar
23.08.2017
10:25:25
На самом деле, мне кажется мастерство - это как раз уметь держать баланс и не удаляться в крайности.

Sergey
23.08.2017
10:25:49

Dinar
23.08.2017
10:25:57
А то видел образец кода который пишет hello world со всеми архитектурными решениями.
Чуть ли ни все паттерны использовали. :)
Вообще я с тобой согласен насчет этих фосов.
Я сам их не использую.
Только сеоиалайзер, потому что везде где я работал, использовали его.
Ну и я даже не думал использовать родной.

Pavel
23.08.2017
10:27:42
что мешает переопределить контроллер? Либо повесить свою валидацию?
в чем там сложность то? я что то не схватил на лету

Google

Sergey
23.08.2017
10:29:17

Dinar
23.08.2017
10:29:55
Это был показательный пример-прикол. :)

Sergey
23.08.2017
10:30:01
если хочешь "быстро запилить регистрацию и авторизацию" - почему бы не заюзать какой-нибудь auth0
даже подобное решение будет кастомизироваться лучше чем fos user
я видел и разработчиков которые вместо того что бы код в зависимость вынести устраняли дублирование "наследованием", видел разработчиков которые "для тестируемости" вводили миллион зависимостей (что иронично ибо это затрудняет тестируемость)
но хуже чем fos user bundle я еще ничего не юзал
оно было прикольно в 12-том году, когда в симфони было неудобно делать тот же form login
с тех пор многое изменилось


Pavel
23.08.2017
10:37:28
Сергей, мне кажется, но разговор зашел в навязывание вашей точки зрения. Возможно у вас уже есть кучка готовых решений которые вы используете, но у других их нет и им действительно быстрее взять то, где много информации и что часто используется, и не тратить 6 лет на написание своих велосипедов :)
Мои кейсы полностью закрывают на текущий момент данные инструменты, как только они перестанут закрывать мои потребности я начну внедрять/искать/писать что то еще, но на текущий момент это экономит много времени мне и в том числе проще вводить людей в проект, потому что данный стек известен многим и информации много... так что я считаю что это все же плюс... а задел на будущее в большинстве случаев минус, потому что проект нужен вчера и будущего может и не быть

Виктор
23.08.2017
10:40:17
Можете что-то готовое посоветовать вместо FOSUserBundle?

Dinar
23.08.2017
10:41:00

Sergey
23.08.2017
10:41:20
но в целом штука бесполезная
мы его использовали по итогу тупо для обработки исключений ибо лень свой листенер было писать

Виктор
23.08.2017
10:46:17
На текущий момент надо: авторизация (без регистрации) - лучше просто на уровне АПИ - форму логина сами приделаем на angular, далее выполнение запросов с access_token в хедера запроса. Нужны группы пользователей, в группах указание ролей, доступных группам, в коде проверка наличия роли у текущего юзера на выполнение той или иной операции. И еще бы прикрутить авторизацию приложений по какому-то постоянному токену (типа как авторизация сделана в сервисах вроде Я.Директ), которые будут использовать АПИ постоянно.

Sergey
23.08.2017
10:48:00

Google

Виктор
23.08.2017
10:48:32
lexic уже видел - а он позволяет сделать то, что я последнее написал?
не просто токен по логин-паролю получить
а именно как-то сгенерировать токен для приложения и чтобы потом постоянно по нему работало

Pavel
23.08.2017
10:51:12
в яндекс сервисах используется oAuth
так что ищите поддержку его

Sergey
23.08.2017
10:52:24
jwt как раз для этого
генерация токенов
если задача простая аутентификация.

Виктор
23.08.2017
10:54:01
я знаю что такое jwt - делал свои задачи на нем без всяких сф. Oauth мне не нужен точно. В lexic просто когда смотрел не увидел этой возможности - только дернуть сервис авторизации и получить аксесс токен
возможно просто не докурил до всех его возможностей

Sergey
23.08.2017
10:57:34
а что тебе еще надо?

Виктор
23.08.2017
11:00:32
ну из серии - зашел в систему админ - зашел в список приложений. Добавил новое приложение - в настройки записал ему какой-нить client_id типа и сгенерировался токен. Токен и client_id прописали в этом приложении дальше и система по АПИ его пускает и дает выполнять операции
логин и пароль тут как бы вроде не нужен
у яндекса это конечно реализовано сложнее - там токен получаешь под учеткой яндекса - мне это не надо, мне внутри компании надо организовать такой сервис - но желательно чтобы это АПИ больше никто не видел, кроме 3-4 приложений, которым надо с этим апи работать

Dmitry
23.08.2017
11:34:58
Я вот помню, почему попробовал jms вместо стандартных средств. Пробовал выдавать сущности напрямую, при этом id - VO, а в сериализации нужно выдать просто как строку (uuid). В jms это делается просто в yml конфиге. Правда потому все-равно большинство сущностей пересало выдаваться напрямую, а через DTO, но несколько простеньких справочников осталось и из сущности

Виктор
23.08.2017
11:57:18
с fos rest еще хоть как-то работать можнго
а нет какой-нить маленькой статьи, где был бы описан пример простого сервиса - как его сделать от начала и до конца, чтобы на входе один объект json передавали, на выходе получали другой? Мне надо для чайника - я тока вторую неделю сф смотрю...
желательно чтобы это был не просто обхект - а то что быстро превращается в Entity и записывается в БД и обратно.

Pavel
23.08.2017
11:59:50

Google

Антон
23.08.2017
19:53:32
Делаю spa приложение на реакте. Есть ли смысл полностью отделить от симфони? Или это нормально с помощью view отрисовать wellcome страницу и там цеплять реакт?

Sergey
23.08.2017
19:54:09
норм
можно вообще отделить бекенд от фронта
и держать какую-нибудь ноду с пре рендерингом

Антон
23.08.2017
19:54:28
Знаю что можно.

Sergey
23.08.2017
19:54:39
а симфа тебе чисто апиху будет отдавать

Антон
23.08.2017
19:55:48
Сейчас просто сделал через Encore подключение реакта и сборку, и апи имеет относительные пути типа /api/v1/products
Кажется что так неверно интуитивно.

Admin
ERROR: S client not available

Sergey
23.08.2017
19:56:45
я вообще encore не заценил особо..

Антон
23.08.2017
19:57:25
Если честно это хрень
Обёртка над вебпаком

Sergey
23.08.2017
19:57:45
я хз зачем это надо было делать

Антон
23.08.2017
19:59:24
Выкинуть думаю. Когда я запускаю его с ключом watch то на каждую сборку он почему то делает новый файл с новым хешем

Виктор
23.08.2017
22:22:42
кто нить на маке ставил под phpstorm x-debug?
именно для sf - чтоб работало на http://127.0.0.1:8000
Матерюсь(

Pavel
23.08.2017
22:27:35
удалённый xdebug? docker/vagrant?

Evgenii
24.08.2017
04:57:19

Mr.Akhrorkhon
24.08.2017
05:02:31
Всем привет ребять у кого есть HTML & CSS и Javascript & jQuery группы

Google

Mr.Akhrorkhon
24.08.2017
05:02:36
если есть у ковото дайте ссылку

Sergey
24.08.2017
06:23:49

Sergey
24.08.2017
06:26:47
пререндеринг же
как ни крути, но на бекенде нарисовать страницу быстрее
ну только если у клиента в кеше не лежит html/js)

Sergey
24.08.2017
07:04:11
пререндеринг же
Если нужен пререндеринг, то лично у меня не получилось адекватно подружить php и react))

Sergey
24.08.2017
07:04:39
для этого и нужна прослойка с нодой)

Антон
24.08.2017
07:34:34
пока о таких вещах не думаю. вообще делаю тестовый проект. развернул в докере
просто если разделю, то придется 2 phpStorm запускать?
или думаю в папке web создать index.html и в nginx настроить
как лучше?

Sergey
24.08.2017
07:38:34
я делал так, в вебпаке есть плагин который генерит html страницу, а для команды типа npm build настроено копирование этого файла в папку web, а в nginx'е все запросы которые не /api идут на index.html остальные на app.php
но это было год назад, мне кажется мир js за это время сильно изменился))) может чего нового уже там напридумывали

Michael
24.08.2017
09:36:11
есть вопрос по доктрине: у меня есть например 5 сущностей (например новости, блоги и т.д.) . все они связаны через смежные таблицы с таблицей комментарии. Можно ли как-то простым способом получить все комментарии, которые относятся к новостям/блогам/т.д., т.е. грубо говоря метод в репозитории такого вида getCommentsByEntity($entityName) , или надо писать прям запрос через query builder, в котором вручную прописывать джоины?

Denis
24.08.2017
09:42:18
Можно. Посмотри аннотации
На доки

Sergey
24.08.2017
09:49:52
$entity->getComments() :D

Michael
24.08.2017
09:52:45
не, немножко по другому, возможно неправильно обьяснил маленько. Так как комментарии - это дочерняя сущность, то у неё есть родитель (новость, блог и т.д.). и соответственно нужно её получить методом вида $comment->getParentEntityClass()


Roman
24.08.2017
10:06:54
Ребята, помогите :)
Есть вот такой код:
<?php require_once __DIR__ . '/../vendor/autoload.php';
use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
class Person
{
/** @var Education[] */
protected $educations = [];
/**
* @return Education[]
*/
public function getEducations()
{
return $this->educations;
}
/**
* @param Education[] $educations
*/
public function setEducations(array $educations)
{
$this->educations = $educations;
}
}
class Education
{
protected $id;
public function __construct($id = null)
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
}
$objectNormalizer = new ObjectNormalizer(null, new CamelCaseToSnakeCaseNameConverter(), null, new ReflectionExtractor());
$serializer = new Serializer([
new ArrayDenormalizer(),
$objectNormalizer,
], [
new JsonEncoder(),
]);
$person = new Person();
$person->setEducations([
new Education(1),
new Education(2),
]);
$normalized = $serializer->normalize($person);
var_dump($normalized);
$data = $serializer->denormalize($normalized, 'Person');
var_dump($data);
Результат работы кода:
array(1) {
'educations' =>
array(2) {
[0] =>
array(1) {
'id' =>
int(1)
}
[1] =>
array(1) {
'id' =>
int(2)
}
}
}
/Users/roman/Projects/33slona/mortgage/mortgage_backend/bin/test.php:76:
class Person#19 (1) {
protected $educations =>
array(2) {
[0] =>
array(1) {
'id' =>
int(1)
}
[1] =>
array(1) {
'id' =>
int(2)
}
}
}
Как десериализовать массив в коллецию Education[] внутри свойства объекта? Кто-то решал такие проблемы? Подскажите как?


Константин
24.08.2017
10:11:22
Написать кастомный денормалайзер?