Мне нужно создать signle глобальной страницы конфигурации без списка, только одна страницы с числом входов, такими как:Sonata Администратор: Хочет создать глобальную конфигурацию страницы
- фба страница ссылка
- идентификатор Google Analytics
- некоторых стандартных интерфейсных тексты
- опция CHECKBOX: показать интро, показать социальный медиа и т.д.
что-то, что не г equire, чтобы просмотреть записи, отредактировать, сохранить и вернуться в список и т. д.
Нужно ли мне создавать новый контроллер с формой и моей собственной ручкой? Или есть способ хорошо соединить/переопределить администратор сонаты с такой панелью?
Я использую:
- Symfony 2.3.x Последние
- соната кэш 2.1.5
- Sonata блок 2.2.7
- соната простой расширяет 2.1.4
- Sonata admin 2.2.8
- Sonata doctrine-orm-admin 2.2.5
- Sonata jquery 1.8.*@dev
- соната аэроропорта 2.2.*@dev
- Соната пользователь 2.2.*@dev
- соната СМИ 2.2.*@dev
- сонаты страница 2.3.*@dev
- Sonata сео 1.1.*@dev
- Stof доктрина Расширения Последние
EDIT
После ответ pulzarraider и еще несколько поисков я закончил с overriding listAction контроллера CRUD.
В деталях, первым создал сервис определения (YML):
services:
stack.admin.global_administration:
class: Stack\Bundle\SiteBundle\Admin\GlobalConfigurationAdmin
tags:
- name: sonata.admin
manager_type: orm
group: Administration
label: Global Configuration
arguments:
- ~
- ~
- StackSiteBundle:GlobalConfiguration
Затем создал класс администратора для этого конкретного действия:
<?php
namespace stack\Bundle\SiteBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Route\RouteCollection;
class GlobalConfigurationAdmin extends Admin
{
protected $baseRouteName = 'global-configuration';
protected $baseRoutePattern = 'global-admin';
protected function configureRoutes(RouteCollection $collection)
{
// notice removal of create action!
$collection->remove('create');
}
}
?>
И, наконец, контроллер CRUD для отображения пользовательской формы вместо объекта по умолчанию перечень действий:
<?php
namespace Stack\Bundle\SiteBundle\Controller;
use Sonata\AdminBundle\Controller\CRUDController as Controller;
use Symfony\Component\HttpFoundation\Request;
class GlobalConfigurationController extends Controller
{
public function listAction()
{
if (false === $this->admin->isGranted('LIST')) {
throw new AccessDeniedException();
}
// custom code here...
return $this->render('StackSiteBundle:Administration:configuration-view.html.twig', array(
'action' => 'list',
'csrf_token' => $this->getCsrfToken('sonata.batch')
));
}
}
?>
Спасибо за помощь в этом!
Это дало мне два намека, что делать, но я закончил переопределять listAction, поскольку мне нужно было отображать пользовательскую форму прямо ПОСЛЕ того, как вы выбираете элемент из верхнего меню. Это сделал трюк. Позже я могу опубликовать код, как это сделать. – ShachMaT
@ShachMaT - По-видимому, вы не нашли времени для публикации кода. Вы упустили возможность поделиться с сообществом. – roelleor
@roelleor да стыдно за меня. Даже несмотря на то, что я разместил «код», так что спасибо за то, что вы меня ударили по голове;) за опоздание. – ShachMaT