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
$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)
$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:
$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
'--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

    public function filterCommandOptions (sfEvent $event, $options)
    {        
        $params = $event->getParameters();
        /** @var sfCommandManager $manager */
        $manager = $params['command_manager'];

        /** @var sfCommandOptionSet $optionSets */
        $optionSets = $manager->getOptionSet();
        /** @var sfCommandOption $genClass */
        $genClass = $optionSets->getOption("generator-class");

        $genClass->setDefault("myFormGenerator");

        return $options;
    }
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:
    public function filterCommandOptions (sfEvent $event, $options)
    {
        // csak a doctrine:build-forms -ra tesszem rá az overrideot
        if ('sfDoctrineBuildFormsTask' === get_class ($event->getSubject ()))
        {
            $params = $event->getParameters ();
            $manager = $params['command_manager'];

            $manager->getOptionSet ()
                ->getOption ('generator-class')
                ->setDefault ('myFormGenerator');
        }

        return $options;
    }