2012-05-24 8 views
8

में कस्टम कार्रवाई इस page पर मैंने पाया कि मेरी कस्टम कार्रवाई के लिए मार्ग कैसे जोड़ें।सोनाटाएडमिनबंडल

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' 
       ) 
      ) 
     )) 
    ; 
} 

यह इस तरह यूआरएल उत्पन्न

मैं नहीं जानता कि इस probl को कैसे हल करें ईएमएस:

  1. उस मार्ग पास के लिए कस्टम नियंत्रक को परिभाषित करने के लिए कैसे करें? अब मुझे एक त्रुटि है:

    विधि "सोनाटा \ AdminBundle \ नियंत्रक \ CRUDController :: ispremiumAction" मौजूद नहीं है।

  2. क्या मैं जेनरेट यूआरएल जेनरेट यूआरएल विधि के साथ बदल सकता हूं?

उत्तर

30

जब आप EntityAdmin कक्षा के लिए सेवा बना रहे हैं तो तीसरा तर्क नियंत्रक का नाम है। आप एक कक्षा बना सकते हैं जो CRUDController बढ़ाती है और इसे सेवा में सेट करती है। उदाहरण के लिए:

नियंत्रक,

//Vendor\YourBundle\Controller\EntityAdminController.php 

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

services.yml में,

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 में नोब हूं और अभी पाया है कि मैं $ संग्रह में _controller भी सेट कर सकता हूं-> विधि जोड़ें –