ugrás a tartalomhoz

symfony 1.4 'command.filter_options' event

razielanarki · 2014. Feb. 24. (H), 13.41
(inb4: nem, nem tudok másik keretrendszert választani, bár szívem szerint sf2/laravellel csinálnám)

megvan a generátor osztály, megvannak a widgetek stb, azt szeretném megoldani h a doctrine:build-* command taskok ezt a generátor osztályt használják.

https://gist.github.com/pborreli/577526

találtam ezt a fenti gist-et githubon, sikerült is elv belőnöm, de az $options-tömbbel gond akadt (Configration.class.php 24 sor, nálam ez a config/ProjectConfiguration.class.php)

ha ebben a formában írom be a sort
  1. $options = array ('--generator-class=myFormGenerator');  
nem fut le a generátorom, a rendes sfXxxx osztályokat kapom a BaseXxxxForm osztályokban.

ha ebben a formában írom be (idézőjelben a class, mintha commandline lenne)
  1. $options = array ('--generator-class="myFormGenerator"');  
nem fut le, hibaüzenetet kapok:
  The execution of task "doctrine:build-forms" failed.  
  - Not enough arguments.  
(wtf??)

próbálgattam mást is (egy kötőjel, kötőjel nélkül, szóközök stb), de sehogysem sikerült elérni a kívánt eredményt:
hogy ne kelljen külön kézzel futtatgatni a doctrine:build-forms -ot, hanem "simán", egy "doctrine:build --all" lal is helyesen fusson le.

ha kézzel futtatom, minden okés, de jó lenne ha automatizálni lehetne ezt a dolgot.

a forráskódot is böngésztem, de elég cryptic/designpatternitis-es/overfactored szal nem ad sok segítéget. doksik sem, gooogle sem :S

mit csinálok rosszul? :)
 
1

Escape

DarkHcK · 2014. Feb. 25. (K), 09.57
Esetleg próbáld meg escape -elni.
Valami ilyesmire gondolok:
  1. $options = array('--generator-class=\"myFormGenerator\"');  
2

nem sajnos

razielanarki · 2014. Feb. 25. (K), 13.55
escapelés sem segít...

elvileg parancssorból ebben a formában kapja meg
  1. '--generator-class=myFormGenerator'  
szóval nem tudom :S

nem tűnik nekem ez olyan edgecase dolognak, sőt szinte biztos h mások is találkoztak vele régebben, hátha erre jár egy öreg sf14 guru aki még emlékszik erre :)
3

public function

Kubi · 2014. Feb. 25. (K), 14.14
  1. public function filterCommandOptions (sfEvent $event$options)  
  2. {          
  3.     $params = $event->getParameters();  
  4.     /** @var sfCommandManager $manager */  
  5.     $manager = $params['command_manager'];  
  6.   
  7.     /** @var sfCommandOptionSet $optionSets */  
  8.     $optionSets = $manager->getOptionSet();  
  9.     /** @var sfCommandOption $genClass */  
  10.     $genClass = $optionSets->getOption("generator-class");  
  11.   
  12.     $genClass->setDefault("myFormGenerator");  
  13.   
  14.     return $options;  
  15. }  
4

köszi

razielanarki · 2014. Feb. 25. (K), 14.58
na erre pl nem jöttem volna rá, pedig kerestem hogy hol lehet overrideolni másképp az optionsjait.

a végső forma ez lett:
  1. public function filterCommandOptions (sfEvent $event$options)  
  2. {  
  3.     // csak a doctrine:build-forms -ra tesszem rá az overrideot  
  4.     if ('sfDoctrineBuildFormsTask' === get_class ($event->getSubject ()))  
  5.     {  
  6.         $params = $event->getParameters ();  
  7.         $manager = $params['command_manager'];  
  8.   
  9.         $manager->getOptionSet ()  
  10.             ->getOption ('generator-class')  
  11.             ->setDefault ('myFormGenerator');  
  12.     }  
  13.   
  14.     return $options;  
  15. }