标签: sonata-admin

Sonata管理员捆绑订单

如何更改SonataAdminBundle中的默认实体顺序以进行列表操作?


回答:)将此添加到您的管理类

protected $datagridValues = array(
    '_page' => 1,
    '_sort_order' => 'DESC', // sort direction 
    '_sort_by' => 'id' // field name 
);
Run Code Online (Sandbox Code Playgroud)

symfony symfony-sonata sonata-admin sonata

14
推荐指数
2
解决办法
6882
查看次数

PHP致命错误:第47行的/var/www/znata.com/app/AppKernel.php中找不到类'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle'

我按照这个文档来安装SonataMediaBundle但是我收到了这个错误:

PHP Fatal error:  Class 'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle' not found in /var/www/znata.com/app/AppKernel.php on line 47
Run Code Online (Sandbox Code Playgroud)

使用sonata命令后生成应用程序:

php app/console sonata:easy-extends:generate SonataMediaBundle
Run Code Online (Sandbox Code Playgroud)

新目录生成于:

apps/Application/Sonata/MediaBundle
Run Code Online (Sandbox Code Playgroud)

一切都已完成,但当我在AppKernel.php中注册生成的应用程序时,我收到了该错误.

public function registerbundles()
{
    return array(
        ...
        new Application\Sonata\MediaBundle\ApplicationSonataMediaBundle(),
        ...
    );
}
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

symfony symfony-sonata symfony-2.1 sonata-admin

13
推荐指数
3
解决办法
8231
查看次数

如何在SonataAdminBundle中使用角色

我开始在Symfony2.1应用程序中使用SonataAdminBundle.我开发了所有类,现在我希望添加角色以防止查看,列出编辑对这些用户组(例如非管理员用户)的操作.Admin

请注意,我不使用SonataUserBundle(派生自FOSUserBundle),我想使用sonata.admin.security.handler.roleSonata提供的安全处理程序:ACL对我​​的小项目来说功能太强大(并且提供了大量开销).

我自己的UserBundle提供User类和Group类(最后一个用于指定每个用户的角色).角色层次结构在我的security.yml文件中提供,例如:

security:
    role_hierarchy:
        ROLE_POST_AUTHOR:            ROLE_USER
        ROLE_ADMIN:                  [ ROLE_USER, ROLE_POST_AUTHOR]
        ROLE_SUPER_ADMIN:            [ ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ] 
Run Code Online (Sandbox Code Playgroud)

现在,我通过指定安全处理程序来配置config.yml文件

sonata_admin:
    security:
        handler: sonata.admin.security.handler.role
Run Code Online (Sandbox Code Playgroud)

官方的文档更侧重于如何使用ACL和SonataUserBundle,所以我不知道怎么我的角色从链接security.yml与SonataAdminBundle.

PS:类似的问题是:SonataAdminBundle安全角色.

roles symfony symfony-2.1 sonata-admin

13
推荐指数
1
解决办法
2万
查看次数

使用Sonata Admin自定义选择sonata_type_model字段列表

我正在使用Sonata Admin并且我有一个类别的字段,我需要像select中的树一样按顺序显示它们:

<select>
    <option>Category father-1</option>
    <option>--Category child-1-1</option>
    <option>--Category child-1-2</option>
    <option>--Category child-1-3</option>
    <option>----Category child-1-3-1</option>
    <option>----Category child-1-3-2</option>
    <option>--Category child-1-4</option>
    <option>--...</option>
    <option>Category father-2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这是可能的?我试过它在'choice_list'中包含一个getTreeCatsArray方法中的数组生成:

protected function configureFormFields(FormMapper $formMapper)
{
    $tree_cat_array = $this->em->getRepository('MyBundle:Category')->getTreeCatsArray();

    $formMapper
        ->add('category', 'sonata_type_model', array(
                'empty_value' => '', 
                'choice_list' => $tree_cat_array)); 
}
Run Code Online (Sandbox Code Playgroud)

这显示错误:

The option "choice_list" with value "Array" is expected to be of type "null", "Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceListInterface"
Run Code Online (Sandbox Code Playgroud)

我不确定是否必须使用字段类型'sonata_type_model'或'choice'

symfony sonata-admin

13
推荐指数
2
解决办法
3万
查看次数

实体的父ID不会保存在SonataAdmin的OneToMany关系中

我正在使用SonataAdmin(和Symfony2)来管理我的实体.我在一个步骤和许多任务之间有一个oneToMany关系.由于一个步骤可以包含许多任务,因此当我创建一个步骤时,我希望能够创建许多任务,并且我希望将这些任务链接到此步骤.为此,我创建了所有正确的管理类(一个用于Task,一个用于Step).

这就是我做的那些导致我的问题.当我尝试创建一个Step时,我可以创建任务甚至重新排序它们,这很棒,并且全部由SonataAdminBundle完成.当我单击"保存"时,所有内容都保存在数据库中,但在数据库中,步骤的ID未在"任务"行中设置.因此,任务没有链接到步骤...

这是我的Step的管理类:

<?php
// src/Acme/DemoBundle/Admin/PostAdmin.php

namespace IMA\ProcessManagementBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;

class StepAdmin extends Admin
{
    // Fields to be shown on create/edit forms
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name', 'text', array('label' => 'Nom de l\'étape'))

            ->add('tasks', 'sonata_type_collection', array(), array(
                'edit' => 'inline',
                'inline' => 'table',
                'sortable'  => 'positionNumber'
            ))
            ->add('positionNumber', 'integer', array('label' => 'Position'))
        ;
    }

    // Fields to be shown on filter forms
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
            ->add('name')

        ;
    } …
Run Code Online (Sandbox Code Playgroud)

php symfony sonata-admin

13
推荐指数
1
解决办法
5397
查看次数

Sonata Admin:如何仅从仪表板中删除"添加新"按钮?

我正在使用Symfony 2.7和Sonata Admin Bundle来管理一些产品和产品图像.我使用了Sonata Admin Cookbook食谱:https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html用于图像.

由于图片必须具有与之关联的产品ID,因此我想禁用Sonata管理信息中心和顶部工具栏中的"添加新图片"链接,因此任何上传的图片都会包含相关产品.实际上,唯一允许添加图像的地方是产品添加/编辑页面.

根据这里找到的一些答案,我试图删除这样的路线:Sonata Admin Dashboard:为每个实体配置操作

protected function configureRoutes(RouteCollection $collection)
{
    $container = $this->getConfigurationPool()->getContainer(); 

    if ($container->get('request')->get('_route') == 'sonata_admin_dashboard') {
        $collection->remove('create');
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案并不好,因为如果在我访问管理仪表板时初始化缓存,则路径会在任何地方被删除,但如果缓存在不同的页面上初始化,则路由将出现在所有页面上,包括仪表板,因为如果在显示链接时路径存在,Sonata Admin会在模板中验证.

所以,我需要存在的路由并删除链接.这可以使用配置完成,还是我必须重写模板?

php dashboard configuration-files symfony sonata-admin

13
推荐指数
4
解决办法
7638
查看次数

奏鸣曲管理员编辑表格多对多不起作用 - symfony2.1.6

我在奏鸣曲管理编辑表单中实现多对多关系时遇到问题,具有以下结构.

purchase (id, total_price, discount, created_at)
purchase_product (purchase_id, product_id, quantity)
product (id, title, desc, price, thumbnail, created_at)
Run Code Online (Sandbox Code Playgroud)

我见过很多线程,并尝试过其中列出的解决方案.我试过了

->add('products', 'sonata_type_model', array('by_reference' => false))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

No entity manager defined for class Doctrine\ORM\PersistentCollection 
Run Code Online (Sandbox Code Playgroud)

然后,当我找不到解决这个问题的方法时,我切换到了

->add('products', 'sonata_type_collection', array(), array('edit' => 'inline', 'inline' => 'table')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

INVALID MODE type : sonata_type_collection - mapping : 8 
Run Code Online (Sandbox Code Playgroud)

我也无法弄清楚如何从purchase_product表中获取和显示数量.

任何指针和帮助都非常感谢.

many-to-many symfony sonata-admin

12
推荐指数
1
解决办法
8217
查看次数

时间显示的格式?

我正在使用symfony2和sonata-admin包进行应用程序.

public function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('fromDate');
Run Code Online (Sandbox Code Playgroud)

它显示这样的时间

September 1, 2013 02:00
Run Code Online (Sandbox Code Playgroud)

所以我改变了

 -  ->add('fromDate');
 +  ->add('fromDate',null,array('format' => 'yyyy-MM-dd HH:mm:ss'))
Run Code Online (Sandbox Code Playgroud)

但它仍然显示相同.

请给我如何使用格式进行时间显示?

symfony sonata-admin

11
推荐指数
1
解决办法
8043
查看次数

Sonata Media Bundle:访问媒体网址

我正在使用奏鸣曲媒体包.

我想知道如何在树枝上访问媒体网址.
我只想要网址,我不需要向媒体展示.

有什么建议?

symfony twig sonata-admin

11
推荐指数
3
解决办法
2万
查看次数

Symfony2 Sonata Admin仅将属性显示为readyonly文本

我的实体上有一些不可变的属性来管理sonata-admin包.

我想在实体的编辑视图中显示它们,但不想提供任何改变它的机制(例如,值不应在输入字段内)

除了这个,我找不到任何东西:

$formMapper
    ->add('post', 'entity', 
        array(
            'label' => 'Some post', 
            'attr' => array(
                'readonly' => true,
                'disabled' => true
            ),
            'class' => 'Acme\DemoBundle\Entity\Post'
        )
    )
;
Run Code Online (Sandbox Code Playgroud)

我尝试过了有read_only,readonly,disabled等所有的东西.它看起来不错,它现在位于下拉列表中(因为它是一个实体),我无法修改它.

但我甚至不希望如此.我真的需要它作为文本(当前的一个).

特别是如果你使用具有softdeletable,timestampable的DoctrineExtensions,这很烦人,因为每次"保存"也会保存表单数据.

将类型更改为"text"而不是"entity"会将输入字段替换为下拉列表.那么,这里最好的方法是什么?

php symfony symfony-sonata sonata-admin

11
推荐指数
2
解决办法
2万
查看次数