标签: symfony-sonata

Sonata Admin Dashboard:配置每个实体的操作

我正在使用SonataAdminBundle作为Symfony2(v2.0.x)驱动的网站的管理界面的基础.

在SonataAdmin中添加到仪表板的实体默认情况下具有以下操作:

  • 名单

这适用于大多数实体,但是该网站有一些实体,其数据不是通过管理界面添加的 - 即它们是从面向公众的网站输入的.管理员只需要查看它们(仪表板中的"列表"操作),编辑它们或删除它们.管理员不应该能够向这些实体添加数据.

有没有办法配置SonataAdmin仪表板中各个实体旁边显示哪些操作?

php symfony symfony-sonata sonata-admin

5
推荐指数
2
解决办法
3680
查看次数

覆盖用户管理表单

我试图覆盖SonataUser/Admin/Model/UserAdmin's,configureFormFields()因为我需要从管理表单中删除一些默认字段.所以我vendor/bundles/Sonata/UserBundle/Admin/Model/UserAdmin.php在我的包中复制了文件app/Application/Sonata/UserBundle/Admin/Model/UserAdmin.php并对其进行了修改.然后将其声明为服务:

# app/application/Sonata/UserBundle/Resources/config/services.yml
services:
    application_user.registration.form.type:
        class: Application\Sonata\UserBundle\Admin\Model\UserAdmin
        arguments: [%sonata_user.model.user.class%]
        tags:
            - { name: form.type, alias: application_user_admin }
Run Code Online (Sandbox Code Playgroud)

现在问题:我做对了吗?我如何告诉sonata管理员使用它?

symfony-forms symfony symfony-sonata sonata-admin

5
推荐指数
1
解决办法
5503
查看次数

Symfony2 Sonata admin datatransformer

我正在尝试设置表单类型"sonata_type_immutable_array",如下所示:

->add('metadatos', 'sonata_type_immutable_array', array(
    'keys' => array(
                    array('Test', 'text', array('required' => false)),
                    array('URL', 'url',  array('required' => false)),
                )
            ))
Run Code Online (Sandbox Code Playgroud)

像这样保存:

public function setMetadatos(\Portal\EntradasBundle\Entity\EntradaMeta $metadatos = null)
{
    $this->metadatos = $metadatos;

    return $this;
}
Run Code Online (Sandbox Code Playgroud)

但总是得到错误:

可捕获的致命错误:传递给Portal\EntradasBundle\Entity\Entrada :: setMetadatos()的参数1必须是Portal\EntradasBundle\Entity\EntradaMeta的实例,给出的数组

我不知道如何设置datatransformer(ArrayToModelTransformer)来达到这个目的.

任何人都可以帮助我PLZ.提前致谢!

symfony symfony-sonata

5
推荐指数
1
解决办法
1990
查看次数

SonataAdminBundle与sonata_type_collection并上传图片

在Sonata Admin中,我想在sonata_type_collection中使用上传和预览图片文件.

在我的Admin/ItemAdmin.php中:

class ItemAdmin extends Admin
{

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('title')
            ->with('Photos')
            ->add('pictures', 'sonata_type_collection', array(
                'label' => 'Pictures',
                'by_reference' => false,
                'required' => false,
                ), array(
                'edit' => 'inline',
                'inline' => 'table',
                'sortable' => 'id'
            ))
            ->end()
        ;
    }
Run Code Online (Sandbox Code Playgroud)

在我的Admin/ItemPictureAdmin.php中:

class ItemPictureAdmin extends Admin {

    protected function configureFormFields(FormMapper $formMapper) {
        $obj = $this->getSubject();

        $formBuilder = $formMapper->getFormBuilder();

        if(is_object($obj) && $obj->getPicture())
        {   
            $formMapper
            ->add('picturePreview', 'image_preview', array(
                'required' => false,
                'property_path' => false,
                'upload_dir' => '/uploads/picture/',
                'file_name' => $obj->getPicture() …
Run Code Online (Sandbox Code Playgroud)

symfony symfony-sonata symfony-2.1 sonata-admin

5
推荐指数
1
解决办法
3876
查看次数

自定义Sonata Admin Dashboard - Sonata和Symfony 2

我已经按照本教程开始工作了:http://sonata-project.org/bundles/admin/master/doc/reference/getting_started.html.我的管理类正在显示,一切正常,这很好.我还在顶部添加了自定义徽标.

现在,我只想自定义仪表板.例如,我显示了一个"Station"实体.要向此实体添加条目,该链接的名称为"link_add".列表相同:"link_list".依此类推,"label_filters","link_action_create",......一切都是这样的.我想这是此操作进入默认布局的标准名称.但即使是演示,它也不是很"性感".

我该如何更改这些名称?我无法弄清楚我要编辑哪个文件?甚至是我应该做的.

谢谢.

php symfony symfony-sonata sonata-admin sonata

5
推荐指数
1
解决办法
1718
查看次数

在奏鸣曲管理员上导出一对多的关系

我试图在网上搜索这个问题的一个明确的解决方案,但那里的新手确实没有具体的解决方案.

我有一个条目有很多EntryListing.在我的EntryAdmin listMapper中,我可以轻松地按语句列出条目

->add('listings')
Run Code Online (Sandbox Code Playgroud)

它只返回EntryListing __toString()函数中定义的列表.

有没有办法通过覆盖getExportFields()函数导出数据时实现相同的方法,如下所示:

public function getExportFields()
{
    return array('name','tel','email','deviceType','postedOn','createdAt','facilitator','listings');
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助

one-to-many symfony symfony-sonata sonata-admin sonata

5
推荐指数
1
解决办法
1921
查看次数

如何使用SonataMediaBundle获取树枝中的图像路径?

我正在使用SonataMediaBundle来跟踪我的图像.我可以使用Sonata的助手在树枝上渲染图像:

{% media user.profilepic, 'reference' %}
Run Code Online (Sandbox Code Playgroud)

这将呈现为 <img src="the src">

但是,我想要获得的是裸路径,所以我可以为我的img添加一个类.就像是:

<img class="img-responsive" src="{{ asset(user.profilepic) }}">
Run Code Online (Sandbox Code Playgroud)

显然, asset(user.profilepic)不返回路径,而是返回对象,并且该对象似乎不包含图像的路径.

编辑

找到了我的答案的一部分:

{% set foo %}
     {% path image, 'small' %}
{% endset %}
<img src="{{ asset(foo) }}" alt=""/>
Run Code Online (Sandbox Code Playgroud)

显然,块的输出可以设置为变量,然后将其传递给资产函数.

php symfony twig symfony-sonata sonata-media-bundle

5
推荐指数
1
解决办法
1368
查看次数

Sonata Admin Bundle徽标的问题

这是我面临的一个奇怪的问题.Sonata管理包标识和标题显示在2个不同的行上.

我的仪表板

以下是我的配置文件的内容.

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:      MyTitle
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

symfony symfony-sonata sonata-admin

4
推荐指数
1
解决办法
4069
查看次数

sonata_type_model/symfony形成一对多关系而不保存

我在帐户和用户之间有一对多的关系.我正在使用sonata管理员进行CRUD.据我所知,它使用Symfony表单来完成工作.我试图添加这样的字段:

        ->add('users', 'entity', array(
            'class'    => 'AcmeDemoBundle:User',
            'required' => true,
            'multiple' => true,
            'expanded' => true
        ));
Run Code Online (Sandbox Code Playgroud)

我也尝试过sonata_type_model

        ->add('users', 'sonata_type_model', array(
            'class'    => 'AcmeDemoBundle:User',
            'required' => true,
            'multiple' => true,
            'expanded' => true
        ));
Run Code Online (Sandbox Code Playgroud)

问题是,在编辑帐户时(当我编辑用户的所有内容都会更新时),不会保存任何内容(与关系相关).我知道我必须更新拥有方(用户端),但我没有成功,因为"公共函数addUser($ user)"没有被调用所以我不能添加类似"$ user-> setAccount($ this )"到那个功能.

我的实体看起来像这样:

class Account
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string")
 */
protected $name;

/**
 * @ORM\OneToMany(targetEntity="Acme\DemoBundle\User", mappedBy="account", cascade={"persist", "remove"})
 */
protected $users;

/**
 * Add users
 *
 * @param Acme\DemoBundle\Entity\User $user
 * @return …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony symfony-sonata symfony-2.1 sonata-admin

4
推荐指数
1
解决办法
8086
查看次数

奏鸣曲包,如何获取当前登录用户?

假设我有一个汽车实体。除了典型的 Car 属性之外,我还使用了 updateBy 属性

在奏鸣曲中,我使用 AppBundle\Admin\CarAdmin.php 创建了一个 CRUD 管理页面

在 CarAdmin 类中,我有必要的方法,如 configureListFields、configureFormFields 等...

我猜我需要使用方法 prePersist($object) 添加 updatedBy 但我面临 $this->getUser() 不可用

问题是,如何让登录用户填充 updateBy 属性?

symfony symfony-sonata sonata-admin sonata-user-bundle

4
推荐指数
1
解决办法
2146
查看次数