Администрация сонаты: мозаика выбрана по умолчанию - PullRequest
0 голосов
/ 14 мая 2018

Я использую Sonata Admin, у меня есть список и мозаичное представление. Как выбрать вид мозаики по умолчанию?
Я не хочу скрывать вид списка, просто выберите вид мозаики по умолчанию.

1 Ответ

0 голосов
/ 22 октября 2018

Классы 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')
    ;
}

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

...