2 Stimmen

Symfony erhalten übermittelten Werte in Form Klasse

Ich muss einen übermittelten Wert für sfValidatorDoctrineChoice in einem Formular verwenden, das nach einem Modell erstellt wurde.

を試してみました。 $this->getValue('country') aber es funktioniert nicht:

$query2 = Doctrine_Core::getTable('sate')->createQuery('s')
            ->select('s.id')
            ->where('s.idcountry = ?', $this->getValue('country'));

Wie kann ich diesen Parameter erhalten?

4voto

Fabio Cicerchia Punkte 639

Wenn Sie auf eine *Form stehen, versuchen Sie dies:

$query2 = Doctrine_Core::getTable('sate')->createQuery('s')
            ->select('s.id')
            ->where('s.idcountry = ?', $this->getObject()->getCountry());

Andernfalls müssen Sie, wenn Sie in einer Aktionsklasse sind, die $this->form->getObject()->getCountry() .

0voto

Daniel Punkte 418
$somevar = sfContext::getInstance()->getRequest()->getParameter('register')
$query2 = Doctrine_Core::getTable('sate')->createQuery('s')
        ->select('s.id')
        ->where('s.idcountry = ?', $somevar['country']);

Das hier funktioniert.

0voto

odino Punkte 1059

Denken Sie daran: sfContext ist nicht kostenlos :)

Das Testen von Code, der sich auf den Kontext stützt, ist wirklich schwierig, da man einen ganzen Symfony-Kontext booten muss, wodurch die Isolation des Tests verloren geht.

Bedenken Sie außerdem, dass Sie auf das gesamte Request-Objekt in einem Formular zugreifen, ein übler Geruch.

Versuchen Sie stattdessen, die Tipps von Fabio Cinerchia zu befolgen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X