2012-07-23 10 views
5

में फॉर्म फ़ील्ड को निकालें/अनसेट करें मैं FOSUserBundle पंजीकरण फ़ॉर्म को विस्तारित करने पर काम कर रहा हूं। मुझे उपयोगकर्ता नाम फ़ील्ड को हटाने/अनसेट करने की आवश्यकता है (क्योंकि मैं उपयोगकर्ता नाम के रूप में ईमेल का उपयोग कर रहा हूं)।Symfony2

क्या मेरे द्वारा विस्तारित किए जा रहे फॉर्म से फ़ील्ड को निकालने का कोई तरीका है?

उत्तर

21

आप जो FOSUser एक आप की तरह कुछ कर सकते हैं प्रदान करता है अपने प्रपत्र प्रकार में/सेट किए बिना कुछ क्षेत्र को निकालना चाहते हैं:

public function buildForm(FormBuilder $builder, array $options) 
{ 
    parent::buildForm($builder, $options);   

    $builder->remove('username'); 
} 
+2

धन्यवाद, किसी ने कल आईआरसी पर सुझाव दिया था। दुर्भाग्यवश, जबकि यह वही करता है जो मैंने पूछा था, यह सत्यापन सरणी नहीं बदलता है। सत्यापन को ठीक करने के लिए फ़ॉर्म के साथ और अधिक गड़बड़ की आवश्यकता है। – MrGlass

1

आप उदाहरण के लिए बाधा के गुणों ओवरराइड करना चाहते हैं, तो आप कुछ इस तरह कर सकते हैं :

<?php 

namespace Acme\UserBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* User 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Acme\UserBundle\Entity\UserRepository") 
* @ORM\AttributeOverrides({ 
*  @ORM\AttributeOverride(name="username", [email protected]\Column(nullable = true, unique = false)) 
* }) 
*/ 
class User extends BaseUser { 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
}