操作 Symfony Intl 提供的国家列表和表单选择类型

2024-04-26

抛开政治不谈,我需要提供Kosovo作为选择国家时的形式选择。

使用 Symfony 的内置表单选择类型执行此操作的最优雅的方法是什么country,同时还提供翻译Kosovo name?

这是我到目前为止所做的事情,它有效,但我担心这可能有点黑客行为。

<?php

namespace Acme\Bundle\DemoBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Intl\Intl;

class LocationType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // Kosovo is not listed as a choice provided by the method call
        // `Symfony\Component\Intl\Intl::getRegionBundle()->getCountryNames()`
        // although it is mostly recognized as in independent state, including by Google Maps.
        // This is because no ISO 3166-1 alpha-2 code as been assigned to that country.
        // However, a temporary code 'XK' is available.

        $countries = Intl::getRegionBundle()->getCountryNames();
        $countries['XK'] = "Kosovo";

        $builder
            ->add('country', 'country', array(
                'choices' => $countries,
                'preferred_choices' => array(
                    'XK', // Kosovo
                    'AL', // Albania
                    'MK', // Macedonia
                    'ME', // Montenegro
                    'GB', // United Kingdom
                    'US', // United States
                ),
            ))
            ->add('district', 'text', array('required' => false))
            ->add('town', 'text', array('required' => false))
        ;
    }
}

您应该创建您的服务,在其中使用Intl的静态方法(如上)并添加您的自定义国家/地区。 然后,将该服务注入到您的表单类型中。或者(甚至更好),定义您的自定义类型(例如“MyCountry”)并使用它而不是标准类型country one.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作 Symfony Intl 提供的国家列表和表单选择类型 的相关文章

随机推荐

  • Mobile Safari HTML5 视频 - 事件侦听器“结束”不会第二次触发

    我正在尝试添加一个按钮 按下时将播放视频 并且当视频结束时显示图像 问题是 我第二次按下按钮时 视频结束 并且没有任何反应 就好像事件侦听器没有被调用一样 var video document getElementById video fu
  • PHP 删除字符串中最后一次出现某个字符后的字符

    所以测试用例字符串可能是 http example com u ben Or http example com 我试图删除最后一次出现 之后的所有内容 但前提是它不是 http 的一部分 这可能吗 到目前为止我有这个 url substr
  • 如何从数组C++中获取唯一的字符串

    我知道我的问题对某些人来说可能很愚蠢 但我整天用谷歌搜索并尝试制定自己的解决方案 但我失败了 请帮助 我需要从简单的字符串数组中打印所有唯一的字符串 example 输入 嗨 我的 名字 嗨 土豆 文本 名字 嗨 输出 我的 土豆 文本 我
  • 控制换行以使线条等宽

    如果 h1 太长而无法容纳在一行中并换行到下一行 我希望这两行的宽度大致相同 我已经到处寻找 CSS 解决方案 但没有成功 CSS 真的不可能做到这一点吗 这似乎是一个如此简单的事情 在很多情况下都很有用 所以我真的很困惑 这似乎不能用 C
  • Chrome 开发者工具 CSS 文件中的某些样式变灰/不可编辑?

    我发现了很多关于 Chrome 开发者工具中灰色样式的问题 但没有一个问题能够描述我的奇怪行为 我在 CSS 文件中有简单的类样式 由于某种原因 我可以编辑其中一个 但不能编辑另一个 CSS 文件 result background col
  • ng 完成不再存在

    刚刚更新为使用最新版本的 Angular CLI 6 0 如何为 ng 二进制文件设置 bash 补全 它曾经是 lt ng completion bash in the bashrc文件 但现在不再了 这还能实现吗 根据this http
  • I/system_server:单向函数结果将被丢弃,但完成状态为 OK 且包裹大小为 4

    我有时会在 logcat 中看到这个 但不知道这意味着什么 我通过在函数参数中传递视图来解决 My XML
  • 从右侧使用 SlidingPaneLayout?

    是否有可能以某种方式使用Android的SlidingPaneLayout来完成它所做的事情 除了从相反的一侧 IE 我想滑动屏幕的右侧而不是左侧来显示第二个窗格 并且它从右侧而不是左侧滑入 理想情况下 我正在寻找一种方法来使用此布局或对其
  • 如何使用 比较 2 个字符串?

    我正在尝试显示一个
  • 在 EF Core 中编写不区分大小写的搜索查询?

    我想问一个关于 SQL Server 和 EF Core 的问题 数据库中的排序规则是Latin1 CI AS我想编写一个包含土耳其字符的搜索查询 在数据库中 人员 表中有一条名为 SEL M 的记录 当我在 EF Core 中编写这样的查
  • html5视频上的圆角

    有没有办法使用 CSS3 border radius 属性截掉 html5 视频元素的角 查看这个例子 http jsfiddle net inquisitive web developer vDPW2 它不起作用 创建一个带有圆角和溢出
  • 创建 32 位计数器时出现全局变量问题

    我正在尝试做正交解码 using 爱特梅尔 Xmega AVR微控制器 Xmega只有16 bit柜台 另外 我已经用完了所有可用的计时器 现在要做32 bit柜台我用过一个16 bit柜台并在其over under flow interr
  • VB.NET 中的下拉菜单

    我有一个小要求 那就是 表单上有两个组合框 用于填充员工姓名和角色 我按如下方式填充组合框 我创建了一个名为 DbConnect 的类 其中有 02 个函数 Public Function getEmployees As DataTable
  • 如何在 WPF 和 ASP.NET MVC 应用程序之间共享最多的代码?

    我可以使用什么架构和模式在 WPF 和 ASP NET MVC 应用程序之间共享最多的模型和逻辑代码 我试图在这里实现更多目标 而不仅仅是将我的数据实体与两个演示项目分开 还有很多共同点 例如关于在什么条件下显示什么 何时需要某些内容等的
  • 如何使用 XSL 在 Mozilla 中显示。

    我怎样才能显示 nbsp 在 Mozilla 中使用 XSL 我尝试过 CDATA 但没有成功 我使用的是火狐浏览器3 5 5 因为您无法将 HTML 字符实体直接放入 XSLT 源中 除了 lt gt apos quot and amp
  • Android 浏览器报告屏幕尺寸错误?

    我正在开发一个移动网站 我遇到了一个有趣的问题 我正在我的台式机以及我的 Motorola Droid Android 2 2 上进行测试 我设置了媒体查询来加载 3 个不同的样式表 320 像素宽 480 像素宽和 640 像素宽 我注意
  • 使用会话 ID 将消息添加到 IAsyncCollector 主题输出

    目前是否可以将消息推送到 Azure 函数的 IAsyncCollector 主题输出并设置会话 ID 我的主题实际上是关于 FIFO 排序的 所以我们必须设置会话 因此 我们设想只设置一个 Guid 作为唯一的会话 ID 我知道如何通过此
  • 显示MJPEG流的跨浏览器解决方案

    有没有一种轻量级 免费且可靠的方式在跨浏览器环境中显示 MJPEG 我正在尝试显示来自轴2120 http www axis com techsup cam servers cam 2120 index htm我正在开发的网站上有 IP 摄
  • 如何在 Guice 中定义方法拦截器的顺序?

    有时需要知道 Guice 中拦截方法调用的方法拦截器的顺序 一个简单的示例场景是使用 guice persist 提供的 Transactional 方法拦截器和自定义 Retry 方法拦截器 重试拦截器必须在事务拦截器外部运行 以确保重试
  • 操作 Symfony Intl 提供的国家列表和表单选择类型

    抛开政治不谈 我需要提供Kosovo作为选择国家时的形式选择 使用 Symfony 的内置表单选择类型执行此操作的最优雅的方法是什么country 同时还提供翻译Kosovo name 这是我到目前为止所做的事情 它有效 但我担心这可能有点