我需要创建没有列表视图的单一全局配置页面,只需要包含输入数量的单页,如:
不需要通过记录列表,编辑,保存和返回列表等的东西。
我是否需要创建具有表单和我自己的crud的新控制器? 或者有没有办法很好地连接/覆盖奏鸣曲管理员与那种面板?
我正在使用:
修改
在回答了pulzarraider和更多搜索之后,我最终得到了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
然后为此特定操作创建了Admin类:
<?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')
));
}
}
?>
感谢你帮忙解决这个问题!
答案 0 :(得分:0)
是的,通过重载默认的CRUD控制器,可以在Sonata Admin中实现。
您必须创建自定义控制器并重载editAction
。
在editAction中,您可以创建标准的Symfony表单,处理来自用户的数据并将其保存在任何您想要的地方。