symfony3 - Est-il possible d'utiliser Symfony sans FormBuilder ?
天蓬老师
天蓬老师 2017-05-16 16:43:53
0
4
460

Pour les formulaires, pouvons-nous utiliser la page conçue pour l'imbrication ? Ou puis-je utiliser FormBuilder uniquement pour créer des formulaires ? Comment vérifier et traiter les données postées à partir d'une page écrite par moi-même ?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(4)
漂亮男人

Je pense qu'il est préférable d'utiliser FormBuilder pour créer des formulaires

  1. Il existe un jeton pour empêcher les attaques CSRF

  2. Il est plus pratique d'obtenir des données en combinant des objets

  3. La validation est plus pratique

Peut-être que lorsque vous le découvrirez pour la première fois, vous aurez peut-être l'impression que FormBuilder est un peu encombrant, mais une fois familiarisé avec lui, il semble assez facile à utiliser

刘奇

Il est préférable d'utiliser ce qu'il fournit. En fait, quel que soit le type de mise en page que vous souhaitez, vous pouvez le personnaliser, vous pouvez modifier le thème du formulaire et vous pouvez personnaliser certains champs. Si vous le créez vous-même, vérifiez-le. toi-même!

洪涛

Pour répondre d'abord aux deux premières questions, des formulaires très complexes peuvent bien sûr être créés à l'aide de pages conçues sur le front-end n'est pas nécessairement nécessaire.

La troisième question, @xxfaxy a dit que vous devez le vérifier vous-même. À mon avis, Symfony a fourni le composant Validation. Si vous utilisez Validation, je ne pense pas qu'il s'agisse d'une auto-vérification complète. Reportez-vous au site officiel de Symfony, faites défiler jusqu'à la fin de la page et consultez la section Validation des valeurs et des tableaux.

Je pense que même si le framework fournit de nombreuses fonctions, ces fonctions sont après tout universelles. Dans certains cas particuliers, ne vous laissez pas limiter par le framework.

迷茫

Tout à fait ok !

En fait, le cœur de votre question est Comment mapper les données de publication (type Array) à l'entité (type Entity) .

Form est une abstraction des objets Entity et Request. C'est-à-dire qu'une fois le nom d'utilisateur de votre entité extrait par le composant Form, la sortie est similaire à <input name="entityName[property]" /> , où Property est la propriété (nom du champ) de votre entité. Lors de handleRequest, la valeur soumise par le front-end sera automatiquement mappée à la propriété property de l'entité. Vous pouvez comprendre que Form est destiné à rendre votre entité interactive .

Et si vous n’utilisez pas le composant Form ?

Symfony fournit également le composant Serializer qui peut également mapper un tableau à une entité :

Votre page front-end :

<form>
    <input type="text" name="username" />
    <input type="text" name="password" />
    <button type="submit">Submit</button>
</form>

Votre entité :

<?php

namespace AppBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class User
{
    /**
     * @Assert\NotBlank
     */
    protected $username;

    /**
     * @Assert\NotBlank
     */
    protected $password;
    
    public funciton setUsername($username)
    {
        $this->username = $username;
        
        return $this;
    }
    
    public function getUsername()
    {
        return $this->username;
    }
    
    // ...
}

Mappez votre FORMULAIRE à des entités :

/**
 * $params 就是:
 * array(
 *     'username' => '狗剩',
 *     'password' => '123456'
 * )
 */
$params = $request->request->all();
$entity = $this->get('serializer')
    ->denormalize($params , 'AppBundle\Entity\User');

Certifiez une entité comme si vous utilisiez Form :

$errors = $this->get('validator')
    ->validate($entity);

Référence : http://symfony.com/doc/current/components/serializer.html#deserializing-an-object

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal