>我有一个主窗体,看起来像:
class ArticleCreateType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
$user = $options['user'];
$builder
->add('id')
->add('date')
->add('title');
if(in_array('ROLE_SUPER_ADMIN', $user->getRoles())) {
$builder->add('articlebody', new ArticleBodyType());
}
else {
// how to add only 'part1' from ArticleBody ??
}
}
...
}
身体部位的子形态是这样的:
class ArticleBodyType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('part1', 'textarea', array('required' => false))
->add('part2', 'textarea');
}
...
}
当连接的用户不是管理员(即评论)时,我只想在主表单中添加来自 ArticleBody 的"part1"字段。
我没有成功:
- 尝试访问文章创建类型
中的"part1"字段- 尝试将$options从ArticleCreateType发送到ArticleBodyType(但如果可能的话,我更愿意做第一种方法)
感谢您的帮助。
我会将user
传递给ArticleBodyType
,并检查其中的用户角色。
class ArticleCreateType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
$user = $options['user'];
$builder
->add('id')
->add('date')
->add('title')
->add('articlebody', new ArticleBodyType(), [
'user' => $user
]);
}
...
}
class ArticleBodyType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$user = $options['user'];
$builder->add('part1', 'textarea', array('required' => false));
if(in_array('ROLE_SUPER_ADMIN', $user->getRoles())) {
$builder->add('part2', 'textarea');
}
}
...
}