我是Symfony的新手,我嘗試使用Sonata和Doctrine ORM創建數據庫接口。起初,我讀了this tutorial,幾天後,它開始在我的VirtualBox機器Ubuntu服務器上工作。如何使用SonataAdminBundle
現在,我試圖在另一個包中使用奏鳴曲管理員。
所以,I`ve了我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
S於俄語)。
接下來,我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! (在N/A - 第5行,第20欄) [ERROR 5]在文檔的末尾附加含量(N/A - 22行,第1列)
我在做什麼錯誤?
是的,我沒有注意到這一點。刪除它 ,並更改了這個 使用My \ DbBundle \ Entity \ Link; 至 使用Application \ MyDbBundle \ Entity \ Link; 但沒有任何變化。 可能是錯誤的,然後symfony試圖加載sonata.admin.my.db.link?或路徑有問題..但我沒有看到錯誤 –
user1935987
你在哪裏找到''這一行?如果我沒有錯,這裏定義了DTD。是使用XML的義務?我發現了更多的yaml格式的資源。嘗試添加這個'<?xml version =「1。0「encoding =」UTF-8「standalone =」yes「?> –
martinqt
http://symfonydev.ru/symfony-back-and-front-interfaces/ <?xml version =」1.0 「encoding =」UTF-8「standalone =」yes「?> 這不會產生任何影響 – user1935987