1

私は Symfony が初めてで、Sonata と Doctrine ORM を使用してデータベース インターフェイスを作成しようとしています。最初にこのチュートリアルを読み、数日後にはすべて VirtualBox マシンの Ubuntu サーバーで動作し始めました。

今、別のバンドルでソナタ管理者を使用しようとしています。

だから、私はここに私の SonataAdminBundle を持っています:

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

新しいバンドルはこちら:

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

m trying to use [this man](http://symfonydev.ru/symfony-back-and-front-interfaces/) (itはロシア語です)。

ve got working Sonata, I次に、新しいバンドルを作成した後:

$ 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: [エラー 94] 検証に失敗しました: DTD が見つかりません! (該当なし - 5 行目、20 列目) [エラー 5] ドキュメントの末尾に余分なコンテンツがあります (該当なし - 22 行目、1 列目)

私は何を間違っていますか?

4

2 に答える 2

0

エラーによると、xml 構成ファイルで問題が発生しました。なぜ<argument/>先頭にあるのですか?それが問題かもしれません。

PS: つまり、これ<argument></argument>はうまく機能しますか?

于 2012-12-29T17:21:39.723 に答える
0

それとも、別のパスを作成する必要がありますか? MyDbBundle と Sonata は別のディレクトリにあるため

于 2012-12-30T06:16:10.267 に答える