1 Отредактировано Vdomah (2013-04-15 22:21:50)

Тема: Генерация модулей в админке

Снова привет и просьба помочь в осваивании.

Проблема возникла с созданием модулей в админке:
- создаю таблицу в базе
- прописываю ее в schema.yml
- генерирую классы модели

Затем все по туториалу:

$ php symfony propel:generate-admin backend fitness_level_video

- почистил кэш

И не работает. Подробнее лог (почему-то останавливается на вызове Индекс-экшена):

Apr 15 23:09:00 symfony [info] {sfPatternRouting} Match route "fitness_level_video" (/fitness_level_video.:sf_format) for /fitness_level_video with parameters array (  'module' => 'fitness_level_video',  'action' => 'index',  'sf_format' => 'html',)
Apr 15 23:09:00 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter"
Apr 15 23:09:00 symfony [info] {sfFilterChain} Executing filter "sfGuardBasicSecurityFilter"
Apr 15 23:09:00 symfony [info] {sfFilterChain} Executing filter "sfCommonFilter"
Apr 15 23:09:00 symfony [info] {sfFilterChain} Executing filter "sfValidationExecutionFilter"
Apr 15 23:09:00 symfony [info] {fitness_level_videoActions} Call "fitness_level_videoActions->executeIndex()"

И никаких ошибок. Попробовал сделать еще одну таблицу с тем же наполнением, но чуть другим названием - все то же самое.

А вот если сгенерировать модуль админки для таблицы, которая была раньше (проект мной унаследован) - все работает:

Apr 15 23:18:49 symfony [info] {sfPatternRouting} Match route "enum_fitness_level" (/enum_fitness_level.:sf_format) for /enum_fitness_level with parameters array (  'module' => 'enum_fitness_level',  'action' => 'index',  'sf_format' => 'html',)
Apr 15 23:18:49 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter"
Apr 15 23:18:49 symfony [info] {sfFilterChain} Executing filter "sfGuardBasicSecurityFilter"
Apr 15 23:18:49 symfony [info] {sfFilterChain} Executing filter "sfCommonFilter"
Apr 15 23:18:49 symfony [info] {sfFilterChain} Executing filter "sfValidationExecutionFilter"
Apr 15 23:18:49 symfony [info] {enum_fitness_levelActions} Call "enum_fitness_levelActions->executeIndex()"
Apr 15 23:18:49 symfony [info] {sfPHPView} Render "/store/shares/projects/myfit/cache/backend/dev/modules/autoEnum_fitness_level/templates/indexSuccess.php"
...

Подскажите, пожалуйста, в какой стороне искать?

2

Re: Генерация модулей в админке

В стороне отладки, хоть построчной. Никто не знает, что и кто написал в вашем проекте ранее, кода проекта никто не видел. Соответственно может быть все что угодно.
Неужели так сложно отдебажить метод executeIndex() и найти, где обрывается выполнение?

3 Отредактировано Ray (2013-04-16 08:57:08)

Re: Генерация модулей в админке

Не касаемо вопроса - меня смущает немного последовательность

- создаю таблицу в базе
- прописываю ее в schema.yml
- генерирую классы модели

Простите, вы её там что, "вручную" создаёте?

4

Re: Генерация модулей в админке

Ray пишет:

Простите, вы её там что, "вручную" создаёте?

Если проект живой и в базе куча данных, то других вариантов не остается. default/smile
Миграций искаропки в первой ветке не было, если мне память не изменяет.

5

Re: Генерация модулей в админке

Возможно я не прав. В Доктрине есть 100%. Мне казалось, что в propel тоже должно быть... Если нет - тогда совсем печально

6

Re: Генерация модулей в админке

Ray пишет:

В Доктрине есть 100%.

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

7 Отредактировано Ray (2013-04-16 10:36:43)

Re: Генерация модулей в админке

Эм. А что тогда

./symfony doctrine:generate-migrations-diff
./symfony doctrine:migrate

? default/smile

Мы об одном и том-же говорим? И таблицы она новые создаёт на живой базе. И индексы добавляет, типы полей меняет без удаления поля, ключи прописывает, связи с существующими таблицами добавляет и всё такое. Покрайней мере то, что описанно в данной теме делает с лёгкостью. Ну а вот если надо мигрировать сложные изменения (вроде переноса данных из таблицы в таблицу или изменение имени поля с переносом данных) - тут да, ручками. Но если есть хоть какая-нибудь голова во время проектирования - такие задачи требуются крайне редко. За весь мой опыт работы (которого не так много, к сожалению - года 4 активной работы) понадобилось всего лишь один раз.

8

Re: Генерация модулей в админке

Ray пишет:

Эм. А что тогда

Что-то или мне очень память изменяет, или там все ручками надо писать, в пустом сгенерированном этой командой классе миграции. default/smile

9

Re: Генерация модулей в админке

Не хочу наговаривать на твою память, но мне всё ещё приходится много работать с первой веткой и единственную вещь, которую приходится ручками менять в миграциях - это в createForeignKey удалять 'onUpdate' => '' иначе миграции падают. А так - вполне себе неплохо генерируется, нареканий нет default/smile Быстро, удобно, ничего не ломает. В проекте уже в сумме было больше сотни миграций на живой базе (добавление кучи новых модулей, функционала, изменение полей). Чищу иногда старые миграции ручками, чтобы в кэше конфига не висели и радуюсь жизни default/smile

10

Re: Генерация модулей в админке

В доктрине миграции есть, для пропела же можно поставить плагин.