【问题标题】:How to use the SonataAdminBundle如何使用 SonataAdminBundle
【发布时间】:2012-12-29 07:13:33
【问题描述】:

我是 Symfony 的新手,我正在尝试使用 Sonata 和 Doctrine ORM 创建一个数据库接口。一开始,我已经阅读了this tutorial,几天后它开始在我的 VirtualBox 机器 Ubuntu 服务器上运行。

现在,我正在尝试在另一个包中使用奏鸣曲管理员。

所以,我在这里有我的 SonataAdminBundle:

/var/www/Symfony/testsonata/src/Application/Sonata

这里还有新的捆绑包:

/var/www/Symfony/testsonata/src/Application/MyDbBundle

Im trying to use [this man](http://symfonydev.ru/symfony-back-and-front-interfaces/) (its 俄语)。

接下来,在 Ive got working Sonata, Im 创建一个新包之后:

$ php app/console generate:bundle --namespace=Application/MyDbBundle

You are going to generate a "Application\MyDbBundle\MyDbBundle" bundle
in "/var/www/Symfony/testsonata/src/" using the "annotation" format.

然后,我运行了以下命令:

$ php app/console doctrine:mapping:import MyDbBundle xml --filter=Link
writing /var/www/Symfony/testsonata/src/Application/MyDbBundle/Resources/config/doctrine/Link.orm.xml

$ php app/console doctrine:generate:entities --path="/var/www/Symfony/testsonata/src" MyDbBundle:Link

Generating entities for namespace "Application\MyDbBundle\Entity\Link"
  > backing up Link.php to Link.php~
  > generating Application\MyDbBundle\Entity\Link

我最后想做的事情是创建一个管理类和一个服务描述

我创建了这个文件/var/www/Symfony/testsonata/src/Application/MyDbBundle/Admin/LinkAdmin.php,其中包含:

<?php
namespace Application\MyDbBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Knp\Menu\ItemInterface as MenuItemInterface;
use My\DbBundle\Entity\Link;

class LinkAdmin extends Admin
{
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper->add('title')
                      ->add('url');
    }

    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper->addIdentifier('title')
                   ->add('url')
                   ->add('updatedAt');
    } 

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper->add('title')
                   ->add('url')
                   ->add('annotation');
    }
}

我将此添加到我的services.xml

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
      <service id="sonata.admin.my.db.link" class="Application\MyDbBundle\Admin\LinkAdmin">
            <tag name="sonata.admin" manager_type="orm" group="Databases" label="Links"/>
            <argument/>
            <argument>Application\MyDbBundle\Entity\Link</argument>
            <argument>SonataAdminBundle:CRUD</argument>
        </service>
    </services> 
</container>

当我去

http://localhost/Symfony/testsonata/web/app_dev.php/admin/dashboard

我收到这条消息:

InvalidArgumentException:[ERROR 94] 验证失败:未找到 DTD! (在 n/a - 第 5 行,第 20 列) [错误 5] 文档末尾的额外内容(在 n/a - 第 22 行,第 1 列中)

我做错了什么?

【问题讨论】:

    标签: php symfony symfony-sonata sonata-admin


    【解决方案1】:

    根据错误,您的 xml 配置文件有问题。为什么开头有&lt;argument/&gt;?这可能是问题所在。

    PS:我的意思是,&lt;argument&gt;&lt;/argument&gt; 效果更好吗?

    【讨论】:

    • 是的,我不知道t noticed this. deleted it &lt;argument/&gt;, and changed this use My\DbBundle\Entity\Link; to use Application\MyDbBundle\Entity\Link; but nothing changes. maybe something wrong then symfony tryed to load sonata.admin.my.db.link ? or something wrong with the paths.. but i didnt 看到错误
    • 您在哪里找到了&lt;container&gt; 行?如果我没记错的话,这里定义了 DTD。使用 xml 是一种义务吗?我发现了更多 yaml 格式的资源。尝试添加此&lt;?xml version = "1.0" encoding="UTF-8" standalone="yes" ?&gt;
    • symfonydev.ru/symfony-back-and-front-interfaces 来自本手册。 这没有任何效果
    • 尝试仅将&lt;service&gt;&lt;/service&gt; 放入您的文件中,因为文档似乎是这样说的。如果您尝试访问从 symfony.com 开始的这两个 url,该网站会返回一个 404 错误,说明找不到 DTD。您也可以尝试从容器标签中删除这些链接。
    • 那么它看起来像这样 Application\MyDbBundle \Entity\LinkSonataAdminBundle:CRUD
    【解决方案2】:

    或者也许我需要另辟蹊径?因为 MyDbBundle 和 Sonata 在不同的目录中

    【讨论】:

    • 我不这么认为。我的项目在 src/ 中有一个 bundle,在 vendor/ 中有奏鸣曲
    猜你喜欢
    • 2012-12-18
    • 2012-07-02
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多