EasyAdmin 国家/地区字段
此字段用于表示与存储在某个属性中的国家/地区代码相对应的名称和/或旗帜。
在 表单页面(编辑和新建) 中,它看起来像这样

基本信息
- PHP 类:
EasyCorp
\Bundle \EasyAdminBundle \Field \CountryField - 用于存储此值的 Doctrine DBAL 类型:
string
- 用于渲染字段的 Symfony 表单类型: CountryType
渲染为:
1
<select> ... </select>
提示
EasyAdmin 包含了所有有效的国家/地区旗帜作为 SVG 文件。您无需执行任何操作即可使后端渲染这些旗帜。但是,如果您想在自己的自定义模板中渲染旗帜,可以使用 EasyAdmin 中包含的 Twig 组件,如下所示
1
<twig:ea:Flag countryCode="CR" height="18"/>
4.20.0
`<twig:ea:Flag/>` 组件在 EasyAdmin 4.20.0 中引入。
选项
allowMultipleChoices
默认情况下,国家/地区选择器允许选择零个(如果属性可为空)或一个值。如果您想允许选择任意数量的值,请将此选项设置为 true
1
yield CountryField::new('...')->allowMultipleChoices();
如果您允许选择多个值,您可能需要更改当前的实体,因为 EasyAdmin 将尝试获取/设置包含国家/地区代码的数组,而不是仅包含一个国家/地区代码的字符串。您可以使用 Doctrine 数组类型的实体,或者您可以继续使用字符串属性并手动处理数组到字符串的转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class MyEntity
{
// ...
public function getCountry(): ?array
{
return '' === $this->country ? null : explode('|', $this->country);
}
public function setCountry(?array $countryCodes): self
{
$this->country = null === $countryCodes ? '' : implode('|', $countryCodes);
return $this;
}
}
includeOnly
默认情况下,国家/地区选择器显示由 ICU 项目 定义的所有国家/地区,该项目与 Symfony 和许多其他技术项目使用的项目相同。使用此选项仅显示给定的国家/地区代码
1
yield CountryField::new('...')->includeOnly(['AR', 'BR', 'ES', 'PT']);
remove
默认情况下,国家/地区选择器显示由 ICU 项目 定义的所有国家/地区,该项目与 Symfony 和许多其他技术项目使用的项目相同。使用此选项从列表中删除给定的国家/地区代码
1
yield CountryField::new('...')->remove(['AF', 'KP']);
showFlag
默认情况下,国家/地区旗帜在只读页面(index
和 detail
)和表单页面中使用的选择器中都显示。如果您想隐藏旗帜,请使用此选项
1
yield CountryField::new('...')->showFlag(false);
showName
默认情况下,国家/地区名称在只读页面(index
和 detail
)和表单页面中使用的选择器中都显示。如果您想隐藏名称,请使用此选项
1
yield CountryField::new('...')->showName(false);
useAlpha3Codes
默认情况下,该字段期望给定的国家/地区代码是遵循 ISO 3166-1 alpha-2 格式的 2 个字母的值。如果您使用 ISO 3166-1 alpha-3 格式的 3 个字母的值存储国家/地区代码,请使用此选项
1
yield CountryField::new('...')->useAlpha3Codes();