ファイルが他の名前空間にあり、add()メソッドが機能するはずですが、ソナタのCRUDテンプレートを上書きして他のボタン/リンクを表示できるようにする必要があります。
また、呼び出されるコントローラとアクションを定義できます。例えば
:
のsrc /アクメ/ DemoBundle /管理/ EntityAdmin.php:
protected function configureRoutes(\Sonata\AdminBundle\Route\RouteCollection $collection)
{
$collection
->add('dummy',
'dummy/{id}',
array('_controller' => 'AcmeDemoBundle:Default:dummy'),
array('id' => '\d+')
)
;
}
のsrc /アクメ/ HelloBundle /コントローラー/ DefaultController.php:
/**
@Route("/dummy/{id}", name="dummy",
requirements={"id" = "\d+"}
)
@Template("AcmeDemoBundle:Default:dummy.html.twig")
*/
public function dummyAction($id)
{
return(array(
'id' => $id
));
}
アプリ/リソース/SonataAdminBundle/views/CRUD/base_edit_form.html.twig:
{% block form %}
...
{% else %}
...
{% block formactions %}
...
{% else %}
...
{% if admin.id(object) %}
...
{% if admin.hasroute('dummy') %}
<a class="btn" target="_blank" href="{{ admin.generateObjectUrl('dummy', object) }}">{% trans from 'SonataAdminBundle' %}link_dummy{% endtrans %}</a>
{% endif %}
...
組み込み管理者も同じですか? – GBRocks
ソナタオリジナルファイルの変更を避けるため、「app/Resources/SonataAdminBundle/views/CRUD/base_edit_form.html.twig」を上書きすることはできませんか? – Lionel
@Lionelあなたがそれらをオーバーライドしているapp/Resourcesにファイルを置くことによって:) – wtfzdotnet