Что бы вы хотели получить в Yii 2?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
Антон Смирнов
Сообщения: 284
Зарегистрирован: 2011.07.08, 10:37
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение Антон Смирнов »

Пересмотрел "generateVerifyCode", согласен, лучше переопределить, т.к. можно еще туда написать какие-то особенности генерации кода.
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение BuCeFaL »

Sam Dark писал(а):[...]
Что бы вы хотели увидеть в Yii 2?
  • Как можно меньше использовать eval.
  • Больше OOP Style, а не вложенных массивов.
  • Описание валидации не массивами, а все теми же объектами с возможностью применять правила валидации к разным моделям или изменять их в ходе работы приложения.
  • Уничтожить CGridView с его eval'ми, погрузкой содержимого грида (подгружается вся страница, а только потом вырезаться грид, париться, добавляется в DOM ).
  • Поддерживать готовый грид (jq-grid или другие) c обменом данными в JSON XML и большим гибким API (client-side).
  • Возможность описывать состояние базы как это делает доктрина. AR динамически получает схему, это круто но парой от миграций выкинутся в окно хочется, особенно если половина применялась, а потом Exception. С описанной схемой можно межить старую и новую генерируя миграцию
  • Меньше магии.
Это хотелось бы видеть.
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: Что бы вы хотели получить в Yii 2?

Сообщение RusAlex »

BuCeFaL писал(а):
Sam Dark писал(а):[...]
[*]Уничтожить CGridView с его eval'ми, погрузкой содержимого грида (подгружается вся страница, а только потом вырезаться грид, париться, добавляется в DOM ).
подключайте CGridView аяксом.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение samdark »

Как можно меньше использовать eval.
В нём практически не будет необходимости ввиду повышения требований до 5.3 как минимум. На самом деле и сейчас почти во всех местах, где юзается eval можно его не юзать путём использования анонимных функций.
Больше OOP Style, а не вложенных массивов.
Представляете, как будет в этом случае конфиг?
Описание валидации не массивами, а все теми же объектами с возможностью применять правила валидации к разным моделям или изменять их в ходе работы приложения.
Подробнее надо, ничего не понял.
Уничтожить CGridView с его eval'ми, погрузкой содержимого грида (подгружается вся страница, а только потом вырезаться грид, париться, добавляется в DOM ).
Ему можно и не всю страницу отдавать, кстати. Какие гриды сейчас неплохие и при этом развиваются?
Возможность описывать состояние базы как это делает доктрина. AR динамически получает схему, это круто но парой от миграций выкинутся в окно хочется, особенно если половина применялась, а потом Exception. С описанной схемой можно межить старую и новую генерируя миграцию
Мы как раз пытались уйти от ручного описания схемы. Ситуация когда миграции заканчиваются Exception означат, что кто-то не тестирует свой код…
Меньше магии.
Примеры?
nauska
Сообщения: 21
Зарегистрирован: 2011.06.03, 16:16

Re: Что бы вы хотели получить в Yii 2?

Сообщение nauska »

ActiveRecord, добавить для методов find и findAll параметр - в каком виде возвращать результат, обьект или массив с данными(без схемы и другим значениями)
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение rak »

nauska писал(а):ActiveRecord, добавить для методов find и findAll параметр - в каком виде возвращать результат, обьект или массив с данными(без схемы и другим значениями)
зачем тогда вообще AR использовать?
nauska
Сообщения: 21
Зарегистрирован: 2011.06.03, 16:16

Re: Что бы вы хотели получить в Yii 2?

Сообщение nauska »

rak писал(а):
nauska писал(а):ActiveRecord, добавить для методов find и findAll параметр - в каком виде возвращать результат, обьект или массив с данными(без схемы и другим значениями)
зачем тогда вообще AR использовать?
чтоб не писать самому класс и методы,
ну и имхо удобно, если надо использовать обьект, поменял только один параметр и все, в коде ничего больше менять не надо
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение rak »

Код: Выделить всё

$criteria = new CDbCriteria;
...
$command = Yii::app()->db->getCommandBuilder()->createFindCommand('tablename', $criteria);
$rows = $command->queryAll();
 
Получаем асоц. массив. Чем это не устраивает?
nauska
Сообщения: 21
Зарегистрирован: 2011.06.03, 16:16

Re: Что бы вы хотели получить в Yii 2?

Сообщение nauska »

rak писал(а):

Код: Выделить всё

$criteria = new CDbCriteria;
...
$command = Yii::app()->db->getCommandBuilder()->createFindCommand('tablename', $criteria);
$rows = $command->queryAll();
 
Получаем асоц. массив. Чем это не устраивает?
тем что эти строки я должен писать в каждом методе где нужны эти данные, и если структура таблицы поменяется, придется искать и менять везде
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение BuCeFaL »

Спасибо за ответ.
Sam Dark писал(а):
Описание валидации не массивами, а все теми же объектами с возможностью применять правила валидации к разным моделям или изменять их в ходе работы приложения.
Подробнее надо, ничего не понял.
Как минимум что бы у каждого валидатора был единый интерфейс, благодаря которому можно легко вводить свои валидаторы.
Sam Dark писал(а):
Уничтожить CGridView с его eval'ми, погрузкой содержимого грида (подгружается вся страница, а только потом вырезаться грид, париться, добавляется в DOM ).
Ему можно и не всю страницу отдавать, кстати. Какие гриды сейчас неплохие и при этом развиваются?
использовал jq-grid на jquery
simplecoding много про него написал в том числе про интеграцию с Yii.
http://www.simplecoding.org/jquery-grid ... ariev.html
Demo: http://trirand.com/blog/jqgrid/jqgrid.html
github: https://github.com/tonytomov/jqGrid (последний коммит 2 дня назад)

C Yii работает отлично.
Аватара пользователя
alexk984
Сообщения: 433
Зарегистрирован: 2010.10.21, 15:03
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение alexk984 »

В jq-grid можно выделить определенные строки/ячейки другим цветом? (аналогично параметрам rowCssClassExpression и cssClassExpression)
Аватара пользователя
Антон Смирнов
Сообщения: 284
Зарегистрирован: 2011.07.08, 10:37
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение Антон Смирнов »

Допустим у нас есть три модели: юзеры, посты и комментарии к постам. Загрузка в Yii очень удобна: user->post_, post->comment_, user->post_[$i]->commen при установке правильных relations. А вот сохранение сразу всего (юзеров, постов и комментов) возможно только с ипользованием таких behaviour как, например, http://www.yiiframework.com/extension/c ... rbehavior/

В Yii ну очень хотелось бы делать так, к примеру:

Код: Выделить всё

$user = new User();

$post1 = new Post();
$post1->name = 1;

$post2 = new Post();
$post2->name = 2;

$comment1 = new Comment();
$comment1->name = 1;

$comment2 = new Comment();
$comment2->name = 2;

$post1->comment_ = array($comment1, $comment2);//comment_ = это рилэйшен

$user->post_ = array($post1, $post2); //post_ = это рилэйшен

$user->save(); //Все сохраняется 
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение samdark »

Антон Смирнов
Это уже есть в планах.
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение Svyatov »

nauska писал(а):ActiveRecord, добавить для методов find и findAll параметр - в каком виде возвращать результат, обьект или массив с данными(без схемы и другим значениями)
Присоединяюсь, хотя возможно лучше для этого отдельные методы ввести.

А вот чего еще AR не хватает - возвращать данные не массивом объектов AR, а специальным объектом-коллекцией AR, через который можно будет со всей коллекцией работать. Например, обновить атрибут или получить массив нужных атрибутов каждого объекта коллекции.

Код: Выделить всё

$posts = Post::model()->findAll();
$posts->update('status', 'readed');
$postsIds = $posts->getAttributes('post_id');
// вместо
foreach ($posts ...) 
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение BuCeFaL »

Svyatov писал(а):
nauska писал(а):ActiveRecord, добавить для методов find и findAll параметр - в каком виде возвращать результат, обьект или массив с данными(без схемы и другим значениями)
Присоединяюсь, хотя возможно лучше для этого отдельные методы ввести.

А вот чего еще AR не хватает - возвращать данные не массивом объектов AR, а специальным объектом-коллекцией AR, через который можно будет со всей коллекцией работать. Например, обновить атрибут или получить массив нужных атрибутов каждого объекта коллекции.

Код: Выделить всё

$posts = Post::model()->findAll();
$posts->update('status', 'readed');
$postsIds = $posts->getAttributes('post_id');
// вместо
foreach ($posts ...) 
Если бы такой метод имел другое название (findAllToArr или что то такое) было бы явней. Один метод массив АР, другой массив данных.

Класс колекция (такой себе итератор) для набора Ar тоже интересно.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение slavcodev »

BuCeFaL писал(а):
Svyatov писал(а):
nauska писал(а):ActiveRecord, добавить для методов find и findAll параметр - в каком виде возвращать результат, обьект или массив с данными(без схемы и другим значениями)
Присоединяюсь, хотя возможно лучше для этого отдельные методы ввести.
Если бы такой метод имел другое название (findAllToArr или что то такое) было бы явней. Один метод массив АР, другой массив данных.
Объясните мне в чем смысл? При работе с AR, он должен возвращать объекты АР, чтоб с ними работать. Если AR не нужен, а нужны массивы, то используйте DAO. Или я чего-то не понимаю?
Жду Yii 3!
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение rak »

mc-bear писал(а):Объясните мне в чем смысл? При работе с AR, он должен возвращать объекты АР, чтоб с ними работать. Если AR не нужен, а нужны массивы, то используйте DAO. Или я чего-то не понимаю?
Вот и я понять не могу в чем смысл использовать объектную AR для формирования асоц массива, если это и так можно сделать, причем уложиться практически в столько же строк кода.
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение Svyatov »

Это просто вопрос удобства и однородности кода. Я не понимаю в чем проблема предоставить такую возможность? :)
Вот и я понять не могу в чем смысл использовать объектную AR для формирования асоц массива, если это и так можно сделать, причем уложиться практически в столько же строк кода.
Покажи пожалуйста как это сделать в столько же строк кода для такого примера:

Код: Выделить всё

$entities = Entity::model()->best()->inCommunityId($community->community_id)->with('type', 'user', 'group.community')->published()->orderByPublishedDate()->findAll(); 
При том, что в скопах best и inCommunityId находится дополнительная логика.
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение Svyatov »

На самом деле это возвращает нас к моему реквесту о методе toArray() для моделей. Таким образом, если AR будет возвращать объект-коллекцию, то все это можно будет элегантно писать как findAll()->toArray().
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Что бы вы хотели получить в Yii 2?

Сообщение rak »

глянул код, таки да, многое там нельзя прописать. Меня сбило то, что CDbCommandBuilder::createFindCommand принимает параметром объект CDbCriteria, думал и все возможности тоже останутся. Поэтому кода придется написать немножко больше :)
upd. Хотя из этого запроса не получится добавить только with. Т.е. придется прописать джойны вручную
Последний раз редактировалось rak 2011.07.15, 14:53, всего редактировалось 1 раз.
Закрыто