2016-03-19 20 views
0

gelen özel elemanına değişken geçirmek, bir özel form elemanı fabrikası vardır. Özel bir MultiCheckbox oluşturur ve bir db sorgusundaki onay kutusu değerlerini ve etiketleri doldurur.ZF2, ZF2 denetleyiciye

class MyMultiCheckboxFactory 
{ 
    public function __invoke(FormElementManager $formElementManager) 
    { 
     $multiCheck = new \Zend\Form\Element\MultiCheckbox(); 

     $serviceManager = $formElementManager->getServiceLocator(); 
     $mapper = $serviceManager->get('Path\To\Mapper\To\Query\DB'); 
     $descriptions = $mapper->findDescriptions($id); 

     // some processing to prepare $value_options array 

     $multiCheck->setOptions([ 
      'label' => 'blah-blah', 
      'value_options' => $value_options 
     ]); 

     return $multiCheck; 
    } 
} 

Sorunum aşağıdaki gibidir. findDescriptions($id) yöntemi, yoldan alabildiğim $id'a bağlıdır. Böyle şeklinde MyMultiCheckbox kullandığınızda Ama:

public function init() 
{ 
    $this->add([ 
     'type' => 'Path\To\MyMultiCheckbox', 
     'name' => 'someName' 
    ]); 
} 

ben MyMultiCheckbox içine $id geçmesine nasıl bilmiyorum. Herkes pleeeeeeeeeease yardımcı olabilir

?

+0

Rus fakat için üzgün. Сорри куда передать то надо? и я так понимаю есть шаблон для этого елемента? istediğiniz zaman bu değişkeni size özel öğe için şablonda ilettiniz. – Naumov

+0

@Naumov, hey, bu öğeye eklenmiş bir görünüm yazısı yok (eğer bir şablonla kastettiyseniz ;-)). form bu elementi ve diğerlerini otomatik olarak oluşturur. benim amacım, bu kanlı unsuru bu özel öğeye aktarmaktır, böylece ne biçim, ne de daha sonra görüntü senaryosunu düzeltmek zorunda kalmam. value_options [ 'nitelikleri'] 'de ilave –

+0

=> dizisi ('kimlik'=> 'yourId')' http://framework.zend.com/manual/current/en/modules/zend belgelerinde olarak sonuç elde yok .form.element.multicheckbox.html – Naumov

cevap

1

Sen 'rota maçında' fabrika içindeki Örneğin aracılığıyla id getirebilir.

$event = $serviceManager->get('Application')->getMvcEvent(); 
$id = $event->getRouteMatch()->getParam('id', false); 

if (empty($id)) { 
    throw new ServiceNotCreatedException('id not set!'); 
} 

$descriptions = $mapper->findDescriptions($id); 
+0

adam, tanrının parmaklarını korusun ve beynine yardım eder. teşekkürler çok lanet olsun! –

İlgili konular