2012-05-24 3 views
8

이 부분에 page 내 맞춤 동작을위한 경로를 추가하는 방법을 찾았습니다. 그 후SonataAdminBundle의 맞춤 작업

protected function configureRoutes(RouteCollection $collection) { 
    $collection->add('ispremium', $this->getRouterIdParameter().'/ispremium'); 
} 

내 관리 클래스에 사용자 지정 작업을 추가

/app_dev.php/admin/mobispot/discodes/discode/300876/ispremium 

이 링크에 대한 나의 템플릿 :

<a href="{{ admin.generateObjectUrl('ispremium', object) }}">Link</a> 

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('id') 
     ->add('code', null, array('label' => 'Code')) 
     ->add('_action', 'actions', array( 
      'actions' => array( 
       'ispremium' => array(
        'template' => 'AppMyBundleBundle:Admin:ispremium.html.twig' 
       ) 
      ) 
     )) 
    ; 
} 

그것은이 같은 URL을 생성

나는이 probl을 해결하는 방법을 모른다. ems :

  1. 해당 경로 통과에 대한 맞춤 컨트롤러를 정의하는 방법은 무엇입니까? 이제 오류가 있습니다 :

    "Sonata \ AdminBundle \ Controller \ CRUDController :: ispremiumAction"메서드가 없습니다.

  2. 생성 된 URL을 generateUrl 메소드로 변경할 수 있습니까? 당신이 EntityAdmin 클래스 서비스를 만들 때

답변

30

는 세 번째 인수는 컨트롤러 이름입니다. CRUDController으로 확장 된 클래스를 생성하여 사용할 수 있습니다. 예컨대

컨트롤러, services.yml에서

//Vendor\YourBundle\Controller\EntityAdminController.php 

class EntityAdminController extends CRUDController 
{ 
    public function ispremiumAction() 
    { 
     //process 
    } 
} 

,

entity.admin.service: 
    class: FQCN\Of\EntityAdmin 
    tags: 
    - { name: sonata.admin, manager_type: orm, group: your_group, label: Label } 
    arguments: [null, FQCN\Of\Entity, VendorYourBundle:EntityAdmin] 
+3

감사는 많은입니다! 추신 symfony 2.0에서 멍청한데, $ collection-> add 메서드에서 _controller를 설정할 수도 있다는 것을 발견했습니다. –

관련 문제