例如,我有3个实体:
在SonataAdminBundle中,我希望能够在编辑子类别时编辑类别和产品时添加子类别.
按照这个想法,我创建了字段,但SonataAdminBundle开始与它们一起玩"Inception".
当我打开类别I时,查看包含相关产品的相关子类别.
在这种情况下,如何切断"产品"字段?
更新:
我的课程(简化)如下所示:
// .../CoreBundle/Admin/CategoryAdmin.php
protected function configureFormFields(FormMapper $formMapper) {
$formMapper
->add('name', null, array('required' => true))
->add('url', null, array('required' => true))
->add('subcategories', 'sonata_type_collection', array('by_reference' => true), array(
'edit' => 'inline',
'sortable' => 'pos',
'inline' => 'table',));
}
// .../CoreBundle/Admin/SubcategoriesAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', null, array('label' => 'name'))
->add('category_id', null, array('label' => 'Category'))
->add('url', null, array('label' => 'Url'))
->add('products', 'sonata_type_collection',
array('by_reference' => false),
array(
'edit' => 'inline',
'sortable' => 'pos',
'inline' …Run Code Online (Sandbox Code Playgroud) 我设置了一个奏鸣曲管理界面,允许用户创建特定内容,但如何限制用户编辑其他用户创建的内容?
为了论证,用户登录并创建博客.在博客的列表视图中,只有博客是应显示用户创建.
目前,一切都显示给每个用户 - 我确实有组/角色设置来限制对管理区域的访问,这很好.
我目前只能想到显示特定登录用户内容的唯一方法是覆盖模板?
但是,当然,这是一个明显而简单的配置设置?
我有一个实体.当实体在弹出窗口中加载时,我需要执行一些JS代码.有没有办法通过管理类配置将自定义JS/HTML代码添加到实体表单.例如,传递模板作为选项
我有一个包含大量状态代码的实体交易.我希望用户能够在SonataAdmin中将这些状态代码看作字符串.用户还应该能够根据这些状态代码进行过滤.
Entity Transaction
{
const TRANSACTION_STATUS_WAITING = 1;
const TRANSACTION_STATUS_PENDING = 2;
const TRANSACTION_STATUS_CONFIRMED = 3;
/**
* Set status
*
* @param smallint $status
*/
public function setStatus($status)
{
$this->status = $status;
}
/**
* Get status
*
* @return smallint
*/
public function getStatus()
{
return $this->status;
}
public function getStatusAsString()
{
switch($this->status){
case(self::TRANSACTION_STATUS_WAITING): return "Waiting for Merchant";
case(self::TRANSACTION_STATUS_PENDING): return "Pending Confirmation";
case(self::TRANSACTION_STATUS_CONFIRMED): return "Confirmed";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经配置了我的Sonata List Mapper,如下所示:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id') …Run Code Online (Sandbox Code Playgroud) 我想在我的捆绑包中使用sonata媒体包作为媒体.
我有一个应该有一个画廊的实体.安装奏鸣曲媒体包并生成easy:extends后,有3个不同的实体:
如何将这些实体链接到我自己的实体以进行库实现???
我正在尝试修改User实体的默认管理员.
只需要从表单中删除某些字段.
我想这个文档对我来说将是有用的.
现在我已创建此管理员并尝试覆盖默认管理员User.
应用程序/应用/索纳塔/ UserBundle /管理/型号/ UserAdmin.php
namespace Application\Sonata\UserBundle\Admin\Model;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\UserBundle\Admin\Model\UserAdmin as BaseType;
class UserAdmin extends BaseType
{
/**
* {@inheritdoc}
*/
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('username')
->add('groups')
->add('enabled')
;
}
/**
* {@inheritdoc}
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with('General')
->add('username')
->add('email')
->add('plainPassword', 'text', array('required' => false))
->end()
->with('Groups')
->add('groups', 'sonata_type_model', array('required' => false))
->end()
->with('Profile')
->add('firstname', null, array('required' => false)) …Run Code Online (Sandbox Code Playgroud) 我按照教程进行设置 SonataAdmin,FosUer
FosUser似乎可以进行连接和断开连接
但是对于Sonata我无法访问
> my_host/web/app_dev.php/admin/dashboard
当我尝试将防火墙重定向到:my_host/web/app_dev.php/admin/login
并抛出一个错误:
Route "admin/login" does not exist.
500 Internal Server Error - RouteNotFoundException
Routing.yml看起来正确:
admin:
resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
prefix: /admin
_sonata_admin:
resource: .
type: sonata_admin
prefix: /admin
soanata_user:
resource: '@SonataUserBundle/Resources/config/routing/admin_security.xml'
prefix: /admin[/xml]
Run Code Online (Sandbox Code Playgroud)
Config.yml:
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.block.service.text:
sonata.block.service.action:
sonata.block.service.rss:
sonata_admin:
title: Admin Panel
templates:
## default global templates
layout: SonataAdminBundle::standard_layout.html.twig
ajax: SonataAdminBundle::ajax_layout.html.twig
## default actions templates, should extend a global templates
list: SonataAdminBundle:CRUD:list.html.twig
show: SonataAdminBundle:CRUD:show.html.twig
edit: SonataAdminBundle:CRUD:edit.html.twig
fos_user: …Run Code Online (Sandbox Code Playgroud) 我使用Sonata EasyExtends软件包从Sonata项目扩展了用户包.它默认放在src/Application/Sonata/UserBundle下
现在我想自定义扩展类并添加一些字段.我注意到注释没有被处理,我需要在src/Application/Sonata/UserBundle/Resources/config/doctrine/User.orm.xml中定义映射
有没有办法使用注释而不是XML文件?我认为它将通过引用用户类来解决我的许多问题,就像现在的命令一样
php app/console doctrine:schema:update --force
似乎没有认识到注释..
我是Symfony2的新手,为了满足我公司的需求,我正在使用Sonata Admin和User捆绑包.
我想知道是否可以根据已登录用户的角色隐藏或显示仪表板上的项目.
例如,我有几个由Sonata AdminBundle(用户,公司,任务,站点等管理)管理的实体,我想将用户管理仅显示给超级管理员,公司和站点管理到另一个角色(例如SITE_ADMIN)和第三个角色的任务.
你有没有遇到过这种情况?你能给我一个直接解决方案的解决方案或线索吗?
非常感谢,
埃内斯
我想要做的是通过从 ProductTable 中删除不必要的字段来优化我的数据库。
我的应用程序基于 Sonata 电子商务。我想从 Product 实体中删除“shortDescription”字段。映射是在供应商中定义的,因此我无法轻松删除该字段。
我试过:
<attribute-override name="rawShortDescription">
<field />
</attribute-override>
Run Code Online (Sandbox Code Playgroud)
它不起作用。
在学说文档中,写到没有可能的方法来覆盖列类型。这是否意味着我无法删除字段?
是否可以删除供应商中定义的字段?
symfony-sonata ×10
symfony ×7
sonata-admin ×5
php ×2
admin ×1
doctrine ×1
doctrine-orm ×1
routing ×1