Отношения объекта данных и страницы

http://www.silverstripe.org/archive/show/1638

Вышеприведенный пост кажется тем, что я должен сделать, но мне просто нужна помощь, чтобы разобраться с этим в моей голове.

Во-первых, мне нужно создать связь между страницей (например, владельцем) и объектом данных (автомобилем). Владелец может создать много автомобилей, связанных с этим владельцем. Однако у меня есть еще одна страница (Гараж), на которой можно создавать автомобили, привязанные к каждому владельцу. Если владельцу не нужна одна из этих машин, он отказывается от нее. Я думал, что для этого подойдет менеджер объектов manymanydata.

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

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

Чтобы уточнить, мой вопрос заключается в том, как мне создать этот беспорядок конструктивным способом SilverStripe? Правильный ли подход, который я использовал, или есть лучший способ?

Большое спасибо заранее и, пожалуйста, скажите мне, если я был неясен.


person MillyMonster    schedule 27.08.2012    source источник


Ответы (1)


Вы используете Silverstripe 3? не могли бы вы уточнить, какие действия происходят в бэкэнде и какие действия возможны для пользователя во фронтенде?

возможно, для ваших отношений было бы лучше использовать ModelAdmin: http://doc.silverstripe.org/framework/en/reference/modeladmin Это дает вам возможность управлять отношениями без накладных расходов Sitetree/Pages. Например, создание элемента Sitetree только для того, чтобы иметь владельца, — не лучший способ, за исключением случаев, когда вам действительно нужен владелец, представленный в виде реальной страницы. Вместо этого владельцем может быть просто объект данных.

Особенно, если вы хотите выводить только JSON, в конце концов вы, возможно, полностью независимы от Sitetree/Pages... тогда вы можете написать собственный контроллер с правилом маршрутизации, который возвращает вам только те данные, которые вам нужны: http://doc.silverstripe.org/framework/en/topics/controller

С уважением, Флориан

person spierala    schedule 27.08.2012
comment
Я использую 2.4.7. Я понял некоторые вещи, у меня есть только один конкретный вопрос. Можно ли вытащить существующую информацию в dataobjectmanager, потому что у меня проблемы с этим. Я имею в виду, что я хочу, чтобы администратор видел все автомобили в dataobjectmanager (или что-то в этом роде), а пользователь видел только те автомобили, которые конкретно к ним относятся. - person MillyMonster; 29.08.2012
comment
эй, у меня не так много опыта работы с менеджером объектов данных. для чего вам это нужно? - person spierala; 04.09.2012
comment
С тех пор я решил это, используя manymanydataobjectmanager для страницы администратора. Спасибо за вашу помощь. :) - person MillyMonster; 06.09.2012