Классы Admin наследуются от AbstractAdmin
.Если у нас есть класс Entity Foo
, мы создадим класс Admin FooAdmin
, расширяющий Sonata\AdminBundle\Admin\AbstractAdmin
.
Давайте посмотрим на исходный код:
public function setListMode($mode)
{
if (!$this->hasRequest()) {
throw new \RuntimeException(sprintf('No request attached to the current admin: %s', $this->getCode()));
}
$this->getRequest()->getSession()->set(sprintf('%s.list_mode', $this->getCode()), $mode);
}
public function getListMode()
{
if (!$this->hasRequest()) {
return 'list';
}
return $this->getRequest()->getSession()->get(sprintf('%s.list_mode', $this->getCode()), 'list');
}
Этометоды, которые устанавливают и получают режим списка.Есть кнопки для двух режимов списка: list
и mosaic
.Если вы наведите курсор мыши, вы увидите, что они указывают на один и тот же URL-адрес, но с разными параметрами:
- / list? _List_mode = list
- / list? _List_mode =мозаика
В методе getListMode
мы видим, что режим list
вызывается по умолчанию.
Я обнаружил, что для установки mosaic
по умолчанию используется вызовметод setListMode
в классе Admin:
protected function configureListFields(ListMapper $listMapper)
{
if ($mode = $this->request->query->get('_list_mode')) {
$this->setListMode($mode);
} else {
$this->setListMode('mosaic');
}
$listMapper
->addIdentifier('fooId')
->add('fooBar')
;
}
Надеюсь, это кому-нибудь поможет.Я искал более изящные способы, такие как настройка в службе администратора, но не мог найти лучшего решения.Если у кого-то есть другие предложения, я был бы рад узнать что-то новое.