2016-04-10 24 views
2

Tüm adım nesneleriyle eşleşen bazı entrysler bulmaya çalışıyorum ancak bunların arasında doğrudan bir ilişki yok, bu yüzden özel bir sorgu kullanmam gerekiyor.Sonata Liste Listesi ListMapper için özel sorgu sonat_type_model alanı

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('texteEtape', null, array('label' => $this->getTranslator()->trans('label.step.text'))); 

    $this->addCountryListMap($listMapper); 

    $listMapper 
     ->addIdentifier('id') 
     ->add('temperature') 
     ->add('rincage', null, array('label' => $this->getTranslator()->trans('label.rinsing'))) 
     ->add('concentration') 
     ->add('temps', null, array('label' => $this->getTranslator()->trans('label.time'))) 
     ->add('produit', null, array('label' => $this->getTranslator()->trans('label.product'))) 
     ->add('enabled', null, array('editable' => true)) 
     ->add('_action', 'actions', array(
      'actions' => array(
       'edit' => array(), 
       'delete' => array() 
      ) 
     )) 
     ->add('updatedAt') 
     ->add('Protocols','sonata_type_model', array('required' => true, 
      'class'=> 'HypredMainBundle:Protocole','property'=> 'name', 
      'query_builder' => $this->getProtocoles($listMapper->get('id')))); 

getProtocoles fonksiyonu:

private function getProtocoles($id) { 
    $querybuilder = $this->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id); 

    var_dump($querybuilder->getQuery()->getResult()); 
    die(); 

    return $querybuilder; 
} 

I (tanımlayıcı bir FieldDescription nesneyi döndürmek) da mevcut taraf kimliği geçirme şekli bilmek istiyorum

benim yönetici sınıfında denedik.

Belki bir şeyleri özlüyorum, umarım yazım kapsamlıdır.

Zaman ayırdığınız için şimdiden teşekkür ederiz.

cevap

4

Bence yolu deneyin, işe yaramayacaksınız.

Ben Protokoller için özel bir şablon tanımlamak için çalışacağını söyledi nitelik

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('id') 
     ->add('Protocols','string', array('template' => 'HypredMainBundle:Protocole:list_protocole.html.twig')) 
    ; 
} 

Bir Twig Uzantısı

class AppExtension extends \Twig_Extension 
{ 
    protected $container; 

    public function __constructor($container) 
    { 
     // remember to pass @service_container defining a twig extension service 
     $this->container = $container; 
    } 

    public function getFilters() 
    { 
     return array(
      new \Twig_SimpleFilter('protocols', array($this, 'protocolsFilter')), 
     ); 
    } 

    public function ProtocolsFilter($id) 
    { 
     // content of getProtocoles() function from question 

     $querybuilder = $this->container->get('doctrine')->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id); 
     var_dump($querybuilder->getQuery()->getResult()); 
     die(); 

     return $querybuilder; 
    } 

    public function getName() 
    { 
     return 'app_extension'; 
    } 
} 
yazdım ediyorum Than size nesne ve onun kimliği

{{ object.id | protocols() }} 

olacak İçinde

+0

Cevabınız için teşekkür ederiz, iyi çalışıyor :) – Kupris