Модуль CRUD и вложенная модель и / или контроллер - PullRequest
1 голос
/ 15 февраля 2012

Можно ли поместить Entity во вложенную папку / пакет и все еще использовать модуль CRUD для базового администрирования?

Я использую приложение YABE , playframework 1.2.4.

Я создал другую сущность с именем " Page " и попытался поместить ее в подпапку с именем "cms" во всех папках, например:

models
-- cms
   -- Page.java
etc.

Существующая ссылка для YABEОбъекты создаются следующим образом:

<a href="@{Users.list()}">Users</a>

, который генерирует маршрут admin / users и ведет вас на страницу, созданную с помощью CRUD

, но если вы добавите что-то подобное, напримертакже создайте контроллер во вложенной папке:

<a href="@{cms.Pages.list()}">Pages</a>

создает ссылку, подобную этой cms.pages / list , и приводит вас к « Not found »

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

Когда классы, связанные с Page, находятся в корне контроллеров и моделей, всеотлично работает, но я хочу что-то вроде "пачкаges "здесь.

Что я делаю не так?

Возможно ли что-то подобное?

Будет ли это работать, если я перенесу все в отдельный модуль?

1 Ответ

1 голос
/ 15 февраля 2012

Это возможно. Однако я обнаружил, что хранение моделей CRUD для сущностей в другом пакете усложнило ситуацию и не добавило особой ценности.

В любом случае, убедитесь, что ваши контроллеры используют аннотацию @ CRUD.for, чтобы они знали, каким объектом управлять:

@CRUD.For(User.class)
public class Users extends CRUD {
}

Если вам нужно поместить свои представления в подпакет, игра crud: ov --template cms / Users / list будет работать не так, как ожидалось, за исключением случаев, когда вы взломаете crud commands.py с чем-то вроде:

p = a.split('/')[0]
c = a.split('/')[1]
t = a.split('/')[2]
app.override('app/views/CRUD/%s.html' % t, 'app/views/%s/%s/%s.html' % (p, c, t))

Не могу точно вспомнить, но думаю, что вам может понадобиться переопределить ваши правила маршрутизации с помощью чего-то вроде:

GET       /cms/?          cms.Users.index
GET       /cms/users      cms.Users.list
GET       /cms/users/new  cms.Users.blank
GET       /cms/users/{id} cms.Users.show
...