3

クラス Car のオブジェクトの管理者クラスがあります。このオブジェクトは、個人または組織に関連しています。

個人と組織の列を追加する方法を知っており、編集オブジェクトへのリンクがあります

$listMapper
->add('person', null, array('admin_code' => 'appli.admin.person'))
->add('factory', null, array('admin_code' => 'appli.admin.factory'))

これにより、リンクが作成されます (

ただし、1列だけが必要です。私はこれを作ります:

$listMapper->add('name',null,array('label'=>'Name','template'=>'AcmeBundle:Admin/Car/list_name.html.twig'))

しかし、私のテンプレートでは、次のようなものが必要ですが、編集オブジェクトへのリンクを作成する方法がわかりません:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{% if object.getPerson %}
    {% set urlObject = 'linkToAdminEditPerson' %}
{% elseif object.getFactory %}
    {% set urlObject = 'linkToAdminEditFactory' %}
{% endif %}
<a href="{{ urlObject }}">{{ object.name }}</a>
{% endblock %}

ありがとうございました

4

2 に答える 2

5

両方のオブジェクトにnameプロパティがあると仮定します。

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
    {% if object.getPerson is defined %}
        {% set objectRoute = 'person_edit' %}
    {% elseif object.getFactory is defined %}
        {% set objectRoute = 'factory_edit' %}
    {% endif %}
    <a href="{{ path(objectRoute, { id: object.id }) }}">{{ object.name }}</a>
{% endblock %}

$baseRouteNameSonata 管理バンドルは、管理クラスのプロパティに基づいて編集ルートを作成し、アクション名を追加することに注意してください。

于 2014-12-03T07:40:56.167 に答える
4
  1. まず、フィールドのカスタム テンプレートを使用します。

    $listMapper
         ->add('_action', 'actions',
            array(
               'label' => 'Person',
               'actions' => array('usage' => array('template' =>'MyBundleBundle:CRUD:edit_url.html.twig'))
            )
     );
    
  2. 管理クラスで、ソナタの編集 URL を生成する関数を作成します。

    public function generateEditUrl($name, $object, $parameters = array(), $absolute = false){
        $classname = $object->getNode()->getPropertyValue('phpcr:class');
        $admin = $this->getConfigurationPool()->getAdminByClass($classname);
        $url = $admin->generateObjectUrl($name, $object, $parameters, $absolute);
        return $url;
    }
    
  3. 「edit_url.html.twig」テンプレートを作成

    {% if object.person is defined and object.person is not empty %}
        <a href="{{ admin.generateEditUrl('edit', object.person, {}, true) }}" target="_blank" title="Edit {{ object.person.title }}">
            <i class="icon-edit"></i>{{ object.person.title }}
        </a>
    {% endif %}
    
于 2014-12-04T14:59:45.240 に答える