我的问题/问题:
好吧,你可以看到我使用FOSUserBundle,我有2个用户角色,每天和每周。在我的注册表单中,我已经实现了ChoiceType以在它们之间进行选择。现在它做得不够。它只是在创建用户时将TYPES放在我的FormType和数据库中,作为字符串而不是正确的角色。
我的目标是:
在用户选择了他的角色(每天或每周)之后,它会进入数据库。现在是棘手的部分。我希望用户显示特定的表单'你可以看到的角色 - > {%if is_granted(' ROLE_DAILY')%}依此类推......如何将其与用户的角色存档?
简短步骤:
我真的不知道如何将角色放在我的数据库中,然后定义特定的表单......
这是我的security.yml:
security:
.....
role_hierarchy:
ROLE_DAILY: [ROLE_DAILY]
ROLE_WEEKLY: [ROLE_WEEKLY]
这是我的表格(树枝):
{% if is_granted('ROLE_DAILY') %}
{# Show when user is role_daily #}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% endif %}
{% if is_granted('ROLE_WEEKLY') %}
{# Show when user is role_weekly #}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% endif %}
这是我的RegistrationFormType:
class RegistrationFormType extends AbstractType
{
const TYPES = ['Daily' => 'Daily', 'Weekly' => 'Weekly'];
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'type',
ChoiceType::class,
[
'label' => false,
'required' => true,
'multiple' => false,
'choices' => self::TYPES,
'constraints' => [
new NotBlank(),
],
]
);
}
public function getParent()
{
return 'FOS\UserBundle\Form\Type\RegistrationFormType';
}
public function getBlockPrefix()
{
return 'app_user_registration';
}
// For Symfony 2.x
public function getName()
{
return $this->getBlockPrefix();
}
}
这是我的registration_content.html.twig:
<div class="form-group">
{{ form_row(form.type, { 'attr': {'class': 'form-control choice-rhythmus'} }) }}
</div>
这是我的用户实体:
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* @ORM\Column(type="string")
*/
protected $first_name;
/**
* @ORM\Column(type="string")
*/
protected $last_name;
/**
* @ORM\Column(type="string")
*/
protected $company_name;
/**
* @ORM\Column(type="string")
*/
protected $company_address;
/**
* @ORM\Column(type="string")
*/
protected $company_city;
/**
* @ORM\Column(type="string")
*/
protected $company_code;
/**
* @ORM\Column(type="string")
*/
protected $company_business;
/**
* @ORM\Column(type="string", name="type", nullable=false)
*/
protected $type;
/**
* @return mixed
*/
public function getCompanyBusiness()
{
return $this->company_business;
}
/**
* @param mixed $company_business
*/
public function setCompanyBusiness($company_business)
{
$this->company_business = $company_business;
}
/**
* @return mixed
*/
public function getType()
{
return $this->type;
}
/**
* @param mixed $type
*/
public function setType($type)
{
$this->type = $type;
}
/**
* @return mixed
*/
public function getCompanyName()
{
return $this->company_name;
}
/**
* @param mixed $company_name
*/
public function setCompanyName($company_name)
{
$this->company_name = $company_name;
}
/**
* @return mixed
*/
public function getCompanyAddress()
{
return $this->company_address;
}
/**
* @param mixed $company_address
*/
public function setCompanyAddress($company_address)
{
$this->company_address = $company_address;
}
/**
* @return mixed
*/
public function getCompanyCity()
{
return $this->company_city;
}
/**
* @param mixed $company_city
*/
public function setCompanyCity($company_city)
{
$this->company_city = $company_city;
}
/**
* @return mixed
*/
public function getCompanyCode()
{
return $this->company_code;
}
/**
* @param mixed $company_code
*/
public function setCompanyCode($company_code)
{
$this->company_code = $company_code;
}
/**
* @return mixed
*/
public function getFirstName()
{
return $this->first_name;
}
/**
* @param mixed $first_name
*/
public function setFirstName($first_name)
{
$this->first_name = $first_name;
}
/**
* @return mixed
*/
public function getLastName()
{
return $this->last_name;
}
/**
* @param mixed $last_name
*/
public function setLastName($last_name)
{
$this->last_name = $last_name;
}
}
答案 0 :(得分:0)