2016-05-24 20 views
0

嗨我想添加新的字段(電話)到我的FOS用戶捆綁註冊表格。但沒有得到這個領域,我有這個問題。在 線32添加電話字段到FOSUserBundle在symfony 2.7

我試圖register_content.html.twig:

方法 「電話」 爲對象 「的Symfony \分量\表格\ FormView控件」 並 不存在FOSUserBundle:註冊覆蓋自定義模板並添加新的電話字段(需要定製以添加少量樣式....)。 \程序\資源\ FOSUserBundle \意見\註冊\ register_content.html.twig

這是我的 'register_content.html.twig' 模板,

{% trans_default_domain 'FOSUserBundle' %} 


<div class="container"> 
    <h1 style="text-align: center;">Register a User</h1> 
    <br> 
    {{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register form-horizontal'}}) }} 
    {# {{ form_widget(form) }}#} 
    <div class="form-group"> 
     <label for="inputEmail3" class="col-sm-2 control-label">Username</label> 
     <div class="col-sm-4"> 
      {{ form_widget(form.username, { 'attr': {'class': 'form-control'} }) }} 
      {{ form_errors(form.username) }} 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="inputEmail3" class="col-sm-2 control-label">Email</label> 
     <div class="col-sm-4"> 
      {{ form_widget(form.email, { 'attr': {'class': 'form-control'} }) }} 
      {{ form_errors(form.email) }} 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="inputEmail3" class="col-sm-2 control-label">Telephone</label> 
     <div class="col-sm-4"> 
      {{ form_widget(form.telephone, { 'attr': {'class': 'form-control'} }) }} 
      {{ form_errors(form.telephone) }} 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="inputEmail3" class="col-sm-2 control-label">Password</label> 
     <div class="col-sm-4"> 
      {{ form_widget (form.plainPassword.first, { 'attr': {'class': 'form-control'} }) }} 
      {{ form_errors (form.plainPassword.first) }} 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="inputEmail3" class="col-sm-2 control-label">Repeat password</label> 
     <div class="col-sm-4"> 
      {{ form_widget (form.plainPassword.second, { 'attr': {'class': 'form-control'} }) }} 
      {{ form_errors (form.plainPassword.second) }} 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-sm-offset-2 col-sm-10"> 
      <input type="submit" class="btn btn-default" value="{{ 'registration.submit'|trans }}" /> 
     </div> 
    </div> 
    {{ form_end(form) }} 
</div> 

這是我的用戶實體,

<?php 

// src/AppBundle/Entity/User.php 

namespace AdminBundle\Entity; 

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

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser { 

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

    /** 
    * @var string 
    * 
    * @ORM\Column(name="telephone", type="text", length=30, nullable=false) 
    */ 
    private $telephone; 

    /** 
    * Set nonotification 
    * 
    * @param text $telephone 
    * @return User 
    */ 
    public function settelephone($telephone) { 
     $this->telephone = $telephone; 

     return $this; 
    } 

    /** 
    * Get telephone 
    * 
    * @return text 
    */ 
    public function gettelephone() { 
     return $this->telephone; 
    } 

    public function __construct() { 
     parent::__construct(); 
     // your own logic 
    } 

} 

回答

1

由FosUserBundle提供的表單不知道您的新字段。 您應該添加一個帶有您創建的額外字段的表單類型。

例子:

class UserType extends AbstractType 
{ 
/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('Telephone'); 
    // Other fields 
} 

public function getParent() 
{ 
    return 'FOS\UserBundle\Form\Type\RegistrationFormType'; 

    // Or for Symfony < 2.8 
    // return 'fos_user_registration'; 
} 

// other methods needed setDefaultOptions() and getName() 

您可以在官方文檔的詳細信息:http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_forms.html

相關問題