ModelAdmin DataObjects
У меня есть этот класс:
class Product extends DataObject {
static $db = array(
'Name' => 'Varchar',
'ProductType' => 'Varchar',
'Price' => 'Currency'
);
}
Таблица базы данных выглядит следующим образом:
---------------------------------
| Name | ProductType | Price |
|-----------+-------------+-------|
| Product 1 | Type1 | 100 |
| Product 2 | Type1 | 240 |
| Product 3 | Type2 | 10 |
| Product 4 | Type1 | 100 |
---------------------------------
Я хотел бы иметь 2 модельных администраторов:
class MyFirstModel extends ModelAdmin {
public static $managed_models = array(
Product
);
}
class MySecondModel extends ModelAdmin {
public static $managed_models = array(
Product
);
}
Как лучше всего прийти к такому результату:
MyFirstModel
должен показать мне все записи, гдеProductType
в таблице естьType1
А также
MySecondModel
должен показать мне все записи, гдеProductType
в таблице естьType2
1 ответ
Решение
getList()
должен быть ответ. DOC здесь http://doc.silverstripe.org/framework/en/reference/modeladmin
Так что-то вроде:
public function getList() {
$list = parent::getList();
if($this->modelClass == 'Product') {
$list->exclude('ProductType', 'Type1');
}
return $list;
}
Если у вас есть более 2 ProductType
Вы можете использовать массив для исключения нескольких значений, таких как
$list->exclude('ProductType', array('Type2', 'Type3'));