Использование SilverStripe 2.4.7.
Я сделал некоторые поиски, но я не могу найти ответ на этот вопрос. Я хочу включить флажок во всплывающем окне в dataobjectmanager, но не для каждого пользователя.
У меня есть две отдельные страницы, одна для одного пользователя, а другая для другого, и я хочу установить флажок только на одной. Я думал, что оператора if будет достаточно, быстро и просто, верно?
public function getCMSFields()
{
$categories = array("Morning","Afternoon", "Evening", "Night");
return new FieldSet(
new TextField('Title'),
new DatePickerField('Date', 'Date'),
new ImageField('Photo', 'Photo'),
new MoneyField('AdultPrice', 'Adult Price'),
new MoneyField('ChildPrice', 'Child Price'),
new DropdownField('Category', 'Choose a Category', $categories)
);
Это моя попытка подхода с оператором if
if($this->ClassName == 'Movie'){
$films= DataObject::get('Films');
if (!empty($films)) {
// create an array('ID'=>'Name')
$map = $films->toDropdownMap('ID', 'Name');
$fieldset->push(new CheckboxSetField(
$name = "Films",
$title = "Select Films",
$source = $map
));
}
}
В основном это работает, если я использую его в getCMSFields_forPopup, но не только в getCMSFields, но меняю поле checkboxset на раскрывающееся.
Изменить
Я обнаружил, что мой подход не будет работать из-за того, что всплывающее окно DOM не может иметь имя класса страницы, содержащей DOM (DataObjectManager). Это простая проблема наследования, и я не могу поверить, что не видел ее раньше. Смотрите ответ ниже, чтобы узнать, как я решил свой исходный запрос.