хочется немного обсудить yii

grigori

( ͡° ͜ʖ ͡°)
Команда форума
понемногу начинаю писать доки, писать буду тут: http://yii.grik.net/
после обсуждения и 5 копеек от Макарова и Кванга, наверное, будет заливаться на yiiframework.com

хотя, мне влом изучать их утилиту для генерации доков и еще один вики-подобный синтаксис, и кто будет конвертировать - еще не знаю
писать в wiki и сразу обсуждать текст по ссылке мне намного удобней
 

Redjik

Джедай-мастер
Вопрос не совсем по yii, но раз уж на нем реализую...

Контроллер обрабатывает запрос -> модель по конкретной странице из бд выдает список сниппетов, которые будут присутствовать во View этой страницы -> контроллер получает это массивом и запускает сниппеты(которые имеют каждый свой view), создавая переменные - затем отдает в View только готовые переменные (аля $output)

Таким образом мы указываем верстальщику только названия переменных...

Никак не могу для себя понять - будет ли этот велосипед нормально ездить?

понемногу начинаю писать доки
очень жду =)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
что такое у тебя сниппет? код, который ты пишешь в базу, а потом прогоняешь через eval?
 

Redjik

Джедай-мастер
Не совсем - вообще решил отказатся от этой идеи =) Мозг зашореный modx дает о себе знать =))))

Посмотрел как сделали pimcore - решил попробовать сделать подобное (только у них Zend)...
Все продумываю структуру cms и понимаю, что это не совсем верный путь... лучше (да и проще) сразу сделать проэкт (конкретное веб приложение с конкретными задачами), узнать тонкости yii, а потом уже как конструктор собирать... (по наслышке знаю, что jango подобным образом устроен)

Единственное, что админку хочу делать на ExtJS, вместо Zii... даже есть готовый модуль, но цены там... =)
 

Redjik

Джедай-мастер
Вопрос на мильон, никогда так не делал, поэтому не представляю как в фазе продакшн это себя поведет.

Хочу оставить функционал генерации контроллера (немного поменяв шаблон) в административной части...
Пример... есть раздел about, и решил директор сделать еще один раздел aboutMyBelovedCat... Ничего страшного же, если он парой кликов в админке создаст пару файлов (не подозревая даже об этом)...? или все же так делать не стоит ?
 

AmdY

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

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Иван Redjik Матвеев сначала читаем мануал и примеры ("blog") к yii, потом генерируем идеи

"генерация контроллера" - бред, т.к. к нему еще нужно будет "генерировать" view
тут нужен обычный wysiwyg-редактор в админке, в репозитории yii есть extension к ckeditor
виртуальные пути настраиваются через urlManager

я недавно сделал такой функционал, ничего особо сложного
 

Redjik

Джедай-мастер
Иван Redjik Матвеев
"генерация контроллера" - бред, т.к. к нему еще нужно будет "генерировать" view
Это понятно ... gii же генерирует и View тоже... тоесть я думал об этом... но идея правда самому не очень нравится


виртуальные пути настраиваются через urlManager
я недавно сделал такой функционал, ничего особо сложного
Тоже начал именно с этой стороны... пока не уперся в 2 проблемы...
1) Мэнеджер не отличает, что перед ним контроллер или переменная (я думал, когда правила создаешь, он пробегается по существующим контроллерам и не найдя, воспринемает как переменную). Пример: site.ru/about - переменная ( Content::model() -> find("`name` = '$id'")), site.ru/news (контроллер NewsController.php)

Обошел это дело по простому... решил раз контроллеры явно зависят только от меня, а не от действий в админке, то нужно явно прописать в правилах urlManager пути до контроллеров, а остальное переменные

2) Вопрос вложенности в Url все равно остается открытым ... если путь содержит например 5 переменных site.ru/about/cats/black/first/1

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

Lirik

Новичок
Кто сталкивался с RBAC в Yii, подскажите,как в Yii реализовать установку ролей через RBAC , когда базовые операции(если рассуждать с точки зрения Yii) храняться в БД? т.е у меня все операции перечислены в БД в виде ACL списка, а как его грамотно согласно архитектуре Yii от туда достать и сформировать систему ролей?
 

MiksIr

miksir@home:~$
Ну rbac который внутри Yii - он умеет в базе все хранить. Не понятно - вы именно в его родной структуре храните или в своей какой-то?
 

Lirik

Новичок
MiksIr
В своей. я видел там файл для работы с БД для RBAC, только немного не понял как загружать все оттуда и строить саму иерархию из БД.
 

MiksIr

miksir@home:~$
Описание таблиц лежит в папке фреймоврка в web\auth
Там три таблицы:
- описание ролей
- наследования между ролями
- назвачение ролей пользователю
Предполагается, что вы прочитали http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#role-based-access-control
Настроив работу с db дальше уже как заводить туда данные - ваш выбор. Можно поставить какой-нить экстеншн для управления ролями, можно просто написать файлик с установками.
 

Lirik

Новичок
MiksIr
Да я прочитал, сейчас посмотрел тот файл sqllite, т.е чтобы получить все роли я должен считать за раз все операции через getAuthItems, или каждый раз обращаться к БД чтобы получить очередной айтем через методы addItemChild,checkAccessRecursive, и т д. мне бы хотелось чтобы оно не постоянно обращалось к БД а просто один раз оттуда все считывало и в памяти строило таблицу прав например. это в Yii не предусмотрено?или надо только постоянно к БД делать запросы?
 

MiksIr

miksir@home:~$
Вы проверяете очень много прав в одном пользовательском запросе?
Ну так спроектирован CDbAuthManager, что делаются запросы... думаю никто не парился, ибо обычное использование - это один checkAccess на запрос.
Но в общем ничего не мешает вам отнаследовать от него и добавить кеширование в приватном свойстве.
Проверка прав делается через checkAccess, далее вызывается getAuthAssignments - там выгребаются все права по пользователю, т.е. не проблема добавить хранение данных, далее getAuthItem - там чуток подправить запрос, ну и checkAccessRecursive отрефакторить, что бы парентов взять одним запросом.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Иван Redjik Матвеев
в 1.1.8 добавили колбек для своего обработчика URL, если вдруг синтаксис правил не подходит
(лично мне они кажутся странными)

скоро напишу подробнее о генерации URL разными функциями и про работу CUrlManager
 

Redjik

Джедай-мастер
Иван Redjik Матвеев
в 1.1.8 добавили колбек для своего обработчика URL, если вдруг синтаксис правил не подходит
(лично мне они кажутся странными)

скоро напишу подробнее о генерации URL разными функциями и про работу CUrlManager
Как раз через этот колбек и сделал...
Вытащил из таблицы все значения, по ним сформировал правила -> засунул в кэш, чтобы каждый раз не генерить...
Правда дока, по этой фишке слабовата... могу внести посильный вклад - поделиться опытом =)
 

Lirik

Новичок
Возник вопрос, поддерживает ли Yii рендеринг нескольких view в один шаблон, т.е например у меня есть 3 разных view, но я их хочу все 3 сразу собрать в один шаблон, посмотрел в классах реализацию (CBaseController,CController), но там только методы renderPartial(), который рендерит вне основного темплейта и render(), который включает в основой шаблон то, что отрендерил. А мне нужно чтобы он отрендерил все 3 разных view и включил их в шаблон(как через метод render), это в Yii можно сделать не написав костыли?или я недосмотрел что-то?
upd. т.е не хочется писать такой костыль
PHP:
$view = $this->renderPartial('view1',array(),true);
$view .= $this->renderPartial('view2',array(),true);
$view .= $this->renderPartial('view3',array(),true);
echo $view;
в классе CBaseController есть еще метод renderInternal(), который если не указывать ему что файл нужно вернуть в переменную, просто подключит его, может как-то через него делается?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я не понимаю значения слова "собрать" во фразе "все 3 сразу собрать в один шаблон"
 
Сверху