Symfony2 skjema - data aldri bundet til det

stemmer
1

Jeg har en enkel form i Symfony2 (beta 5), ​​men innlegget data aldri bundet til skjemaet. Her er mine klasser (trimmet for kortfattethet):

/**
 * Represents a User
 *
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks()
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\Column(type=integer)
     * @ORM\GeneratedValue(strategy=AUTO)
     */
    protected $id;
    /**
     * @ORM\Column(type=string, unique=true, length=150)
     * @Assert\Email()
     */
    protected $email;

    /**
     * @param string $email
     */
    public function setEmail($email)
    {
        $this->email = $email;
    }

    /**
     * @return string $email
     */
    public function getEmail()
    {
        return $this->email;
    }
}

Skjemaet byggherre:

class UserType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('email');
    }
}

Handlingen:

public function addAction()
{
    $request = $this->getRequest();

    if ($request->getMethod() == 'POST')
    {
        $user = new User();
        $form = $this->createForm(new UserType(), $user);
        $form->bindRequest($request);
print_r($_POST);        // fine - contains an email address
echo 'email: ';
print_r($user->getEmail());              // always empty
        if ($form->isValid())            // never valid
        {
             // ....

Post data:

array([email] => 'test@test.com')

Hva er galt med min oppsett? Dette er den andre formen jeg har gjort med en annen modell, så jeg åpenbart gjør noe galt.

Er det kanskje at jeg legger 'e' som nøkkelen i stedet for noe mer forseggjort som 'user_email'? Jeg har ikke gjort form - jeg bare sende legg data for hånd fordi dette er for en webtjeneste.

Takk

Publisert på 19/06/2011 klokken 20:59
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Bruker du skjemaet byggmester til å lage skjemaet? Skjemaet bygge forventer navnet for å følge et bestemt format, ikke bare har et emailfelt. Du vil normalt lage skjemaet, så sjekk hvis forespørselen er et innlegg, om ikke gjengi formen i malen.

$form = $this->createForm(new UserType(), $user);
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
     $form->bindRequest($request);
     ...
     return...
}
return array('form' => $form->createView());

Deretter i malen du bruker {{ form_widget(form) }}eller relaterte funksjoner som lar deg gjengi deler av skjemaet.

Svarte 19/04/2012 kl. 19:41
kilden bruker

stemmer
1

Du bør prøve å legge denne metoden i din brukertype form:

public function getDefaultOptions(array $options)
{
    return array(
        'data_class' => 'User',
    );
}
Svarte 20/06/2011 kl. 09:57
kilden bruker

stemmer
1

problemet var med mitt innlegg data. det skulle ha vært:

array ( [user] => Array ( [email] => test@tests.com ) )
Svarte 20/06/2011 kl. 06:44
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more