Symfony3:是否可以更改表单的名称?
Symfony3: is it possible to change the name of a form?
使用 Symfony 2.7,您可以使用 getName()
方法在 EntityType class 中自定义表单名称
现在已弃用。 Symfony 3.0 还有其他方法吗?
我有自定义原型 entry_rows 用于我需要以不同形式使用的集合。
由于行的名称基于表单的名称,因此我需要更改后者以便将它们用于不同的表单。
根据表单的构建方式,可以使用不同的方法来设置表单名称。
如果您通过 $this->createForm(CustomType::class)
创建表单:
$formFactory = $this->get('form.factory');
$form = $formFactory->createNamed('custom_form_name', CustomType::class);
如果您直接通过 $this->createFormBuilder()
从控制器构建表单:
$formFactory = $this->get('form.factory');
$form = $formFactory->createNamedBuilder('custom_form_name', CustomType::class);
查看 FormFactory and FormBuilder API 了解更多信息。
您应该实施 getBlockPrefix
方法,而不是迁移指南 here 中所述的 getName
。
例如:
/**
* Returns the prefix of the template block name for this type.
*
* The block prefix defaults to the underscored short class name with
* the "Type" suffix removed (e.g. "UserProfileType" => "user_profile").
*
* @return string The prefix of the template block name
*/
public function getBlockPrefix()
{
return "form_name";
}
希望对您有所帮助
你可以试试,去掉字段名的前缀
public function getBlockPrefix()
{
return null;
}
使用 Symfony 2.7,您可以使用 getName()
方法在 EntityType class 中自定义表单名称
现在已弃用。 Symfony 3.0 还有其他方法吗?
我有自定义原型 entry_rows 用于我需要以不同形式使用的集合。
由于行的名称基于表单的名称,因此我需要更改后者以便将它们用于不同的表单。
根据表单的构建方式,可以使用不同的方法来设置表单名称。
如果您通过 $this->createForm(CustomType::class)
创建表单:
$formFactory = $this->get('form.factory');
$form = $formFactory->createNamed('custom_form_name', CustomType::class);
如果您直接通过 $this->createFormBuilder()
从控制器构建表单:
$formFactory = $this->get('form.factory');
$form = $formFactory->createNamedBuilder('custom_form_name', CustomType::class);
查看 FormFactory and FormBuilder API 了解更多信息。
您应该实施 getBlockPrefix
方法,而不是迁移指南 here 中所述的 getName
。
例如:
/**
* Returns the prefix of the template block name for this type.
*
* The block prefix defaults to the underscored short class name with
* the "Type" suffix removed (e.g. "UserProfileType" => "user_profile").
*
* @return string The prefix of the template block name
*/
public function getBlockPrefix()
{
return "form_name";
}
希望对您有所帮助
你可以试试,去掉字段名的前缀
public function getBlockPrefix()
{
return null;
}