
Konstantin
31.03.2017
08:42:16
ну тебе скажут что yii2 для мелких проектов лара для сердних и больших симфони для супер кастомных

Timur
31.03.2017
08:43:12

Mr.
31.03.2017
08:43:39
это как-бы тоже самое, что и сказать "молоток гвозди забивать, кувалда - колышки, а киянка - людей"
а отличия-то у них в чём?

Dmitriy
31.03.2017
08:50:34

Google

Mr.
31.03.2017
08:51:13
подскажи, есть какие-то ключевые отличия между фреймворками? насколько сложно будет переключиться с yii на symfony/lavarel?

Dmitriy
31.03.2017
08:51:46

Mr.
31.03.2017
08:52:22
ты с каким работаешь: symfony или lavarel?
я по каждому доку читал, в принципе, основные понятия есть

Zhandos
31.03.2017
08:52:38
что такое DI ?

Timur
31.03.2017
08:52:48
У Yii2 Service Locator простейший
У Symfony нормальный DI полноценный

Dmitriy
31.03.2017
08:53:13
у ларки был лучше DI. до недавнего времени. говорят что в симфони 3.3 он тоже крутой

Mr.
31.03.2017
08:55:38
меня интересует роутинг: насколько сильно он отличается от yii? в yii у нас есть urlRules, которые прописываются на уровне конфига приложения. В других фреймворках роуты создаются динамично? типа как в zend'е - <module>/<controller>/<action>, или их тоже где-то нужно объявлять? как насчёт кастомных роутов?

Alexander
31.03.2017
08:55:57
И судя по всему, формы в симфони там такие же, как и в зенде (если верить описанию выше)

Timur
31.03.2017
08:56:07
1. Аннотации в контроллере
2. Конфиги
Два способа

Google

Dmitriy
31.03.2017
08:56:09
Огромная разница. Для меня роутинг в yii2 это огромная кака из прошлого века

Timur
31.03.2017
08:56:16
Всё надо явно прописывать.
В Symfony 2.*+.
http://symfony.com/doc/current/routing.html#routing-examples
@Route("/blog", name="blog_list")

Dmitriy
31.03.2017
08:57:40

Mr.
31.03.2017
08:58:15
ну, не так уж сильно оно и отличается
нужно лишь привыкнуть к тому что urlRules обрабатываются не системой, а самому нужно делать, как я понял, в RouteCollection()

Dmitriy
31.03.2017
08:58:18
Там нет такого, что на каждый чих нужно писать свой роутинг, как в yii2
у ларке обычно роутеры в 1 файле. У симфони в антонациях держат

Mr.
31.03.2017
08:59:18
да и дока довольно прилично выглядит)
что за аннотации?

Dmitriy
31.03.2017
09:00:01
phpdoc
если грубо говорить

Mr.
31.03.2017
09:00:16
нормально
те, можно обойтись аннотациями к экшнам в контроллере, и не нужно пилить отдельный файлик с роутами?
а эти аннотации не конфликтуют с phpdoc'ом?

Dmitriy
31.03.2017
09:01:38
Ах да у симфони нет AR. Data mapper там

Alexander
31.03.2017
09:01:48

Dmitriy
31.03.2017
09:01:58

Mr.
31.03.2017
09:02:00
меня что отталкивало больше всего - это для меня непонятный роутинг (сейчас вроде как прояснился немного), и шаблонизатор на фронте

Google

Alexander
31.03.2017
09:02:12

Timur
31.03.2017
09:02:15
Вообще не в обиду фанатам Yii2, но Yii2 отстал на лет 6 точно. От Symfony и Laravel.

Mr.
31.03.2017
09:02:39
каждый инструмент создан для своей задачи

Dmitriy
31.03.2017
09:03:06

Timur
31.03.2017
09:03:11
Ну, можно и дальше его юзать. Codeigniter тоже до сих пор юзают, хотя он устаревшим был уже лет 7 тому назад.

Mr.
31.03.2017
09:03:14
ну и в умелых руках любой инструмент будет делать то, что ты захочешь
+ ты забываешь, с чем я имею дело сейчас
я думаю, yii намного лучше, чем это

Timur
31.03.2017
09:04:03
+ ты забываешь, с чем я имею дело сейчас
С чем?
Я тоже на Yii2 разрабатываю проект сейчас. Но это прихоть клиента. Мне вообще всё равно на чём делать проект. Если бы дали мне выбрать, то взял бы Symfony.
А.
ZF 1.*.

Mr.
31.03.2017
09:04:11
ага)

Boris
31.03.2017
09:04:25
Ребят, подскажите, пожалуйста.
Никак не могу понять.
Есть строка в БД, в ней есть поле "group_profile" это FK
если делаю "->where(['group_profile' => 1])", то все ок
но мне надо что-бы я искал именно в значении FK
$query = Ap::find()->joinWith('groupProfile')->where(['group_profile.id' => 1]);
нифига не работает

Google

Mr.
31.03.2017
09:07:55
не совсем понятно что тебе и откуда нужно
есть две таблицы: a и b
тебе нужно сделать select * from a left join b where b.id = '1'?

Boris
31.03.2017
09:08:42
да

Mr.
31.03.2017
09:09:51
Ap::find()->joinWith(['groupProfile gp'])->where(['gp.id' => 1]);
попробуй так
офф дока:
Order::find()->joinWith(['books b'], true, 'INNER JOIN')->where(['b.category' => 'Science fiction'])->all();

Boris
31.03.2017
09:10:41
У меня уже есть такое-же по функционалу решение и оно работает, но делаю аналогичное и нифига)
т.е. в другой модели:
$query = Ngpv::find()->joinWith('type0')->where(['type.slug' => $slug]);
работает
а это нет:
$query = Ap::find()->joinWith('groupProfile')->where(['group_profile.slug' => $slug]);

Admin
ERROR: S client not available

Mr.
31.03.2017
09:11:49
попробуй как я написал
возможно всё дело в названии таблицы

Boris
31.03.2017
09:13:31
действительно, так работает

Mr.
31.03.2017
09:14:08
:)
никогда не используй в join'ах названия таблиц
обезопасишь себя минимум в таких ошибках
а теперь у меня вопрос
уважаемые знатоки
как привязать translator к форме в zend 1? :D

Boris
31.03.2017
09:15:24
В моем нерабочем, groupProfile вызов этого:
public function getGroupProfile()
{
return $this->hasOne(Ngpv::class, ['id' => 'group_profile']);
}
Верно я думаю?

Mr.
31.03.2017
09:17:27
не могу понять, что у вас там не так

Google

Mr.
31.03.2017
09:17:29
всё так

Boris
31.03.2017
09:19:23
Это не работает)
$query = Ap::find()->joinWith('groupProfile')->where(['groupProfile.slug' => 'zavod']);
Это работает:
$query = Ap::find()->joinWith('groupProfile gp')->where(['gp.slug' => 'zavod']);
Любопытно почему

Mr.
31.03.2017
09:21:34
я тут писал длинный текст, объясняющий работу связей в yii2, но решил сделать проще

Konstantin
31.03.2017
09:21:48
ну дык ты посмотри что он там генерит на уровне sql запроса))

Mr.
31.03.2017
09:22:04
Ap::find()->joinWith('groupProfile')->where(['groupProfile.slug' => 'zavod']);
ты на 100% уверен что у тебя в joinWith('groupProfile') будет таблица groupProfile?
я-бы не был так уверен, даже если в Ngpv написано такое название таблицы
yii может где-то что-то обозвать каким-то алиасом
а так - ты указываешь, что для таблицы, которая используется в связи groupProfile нужно использовать алиас gp
и используешь его в where вместо названия таблицы, так как алиас - это, грубо говоря, ссылка на таблицу


SiZE
31.03.2017
09:27:02
если кому интересно: zend предлагает формы использовать сразу для вывода и обработки данных
то есть, ты создаёшь форму не как в yii, как модель с данными, а описываешь сразу какой элемент будет какого вида (например, Zend_Form_Element_Text или Zend_Form_Element_Select), прописываешь фильтры\валидаторы, а в конце концов делаешь вывод формы как строки (те echo $form) во вьюхе
получается не очень окей, ибо стилизацию вывода тоже прописываешь в форме как "декораторы"
я использовал стандартную логику форм только в плане создания модели данных, допилил, чтобы можно было использовать на одной странице больше одной формы (проще говоря - formName[fieldName] - кто знает, тот поймёт), ну и хелпер для вывода отдельного элемента формы - типа как в yii $form->field(), только в zend'е у меня это $this->formField())
костыльно, да, но всё же удобней, чем по умолчанию предлагает zend
Вы не верно поняли формы в Й. Форма там не модель с данными.
Есть ActiveForm который может использовать модель с данным
И есть объект поля.


Mr.
31.03.2017
09:28:17
Да, я знаю
Я имел ввиду под формой прослойку между AR и выводом пользователю

SiZE
31.03.2017
09:29:52
В зенде был билдер форм на сколько я помню, который можно было использовать с моделью

Mr.
31.03.2017
09:31:27
Может во втором
Найти для первого зенда что то, во что можно было бы положить логику работы с AR мне не удалось

SiZE
31.03.2017
09:32:03
В первом
Я с ним лет 5 назад работал, сейчас не вспомню уже что к чему было

Mr.
31.03.2017
09:32:49
По секрету скажу так, что в одном нашем проекте, которым пользуется самый крупный украинский интернет магазин зендовые формы используются только для валидации данных
Обработка данных и их сохранение происходит в экшнах
Но я его не писал)

Alejandro
31.03.2017
10:29:48
Парни, существует ли способ отловить вызываемую функцию, чтобы переопределить, типа как для классов отлов метода __ call($fmethod)