Symfony2 形式:货币货币符号并在 Twig 中显示

Symfony2 form: Money Currency Symbol and Displaying in Twig

我在 Symfony 中有一个表单,它使用货币字段类型并将货币设置为 GBP。

当我将表单传递给 twig 时,表单使用以下方式呈现:

{{ form_row(form.price) }}

这会呈现以下内容 html:

£<input id="app_product_price" name="app_product[price]" required="required" class="form-control" value="9.95" type="text">

我的目标是尝试获取货币符号,以便我可以使用 bootstrap 货币字段:

<form class="form-inline">
  <div class="form-group">
    <label class="sr-only" for="exampleInputAmount">Amount (in dollars)</label>
    <div class="input-group">
      <div class="input-group-addon">$</div>
      <input type="text" class="form-control" id="exampleInputAmount" placeholder="Amount">
      <div class="input-group-addon">.00</div>
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Transfer cash</button>
</form>

显然,我需要做一些样式设置。但是,我尝试使用下面的方法获取货币符号,但似乎没有我可以看到的任何文档来执行此操作。

{{ form_label(form.price) }}

{{ form_widget(form.price) }}

这些似乎都无法获得货币,我也研究过使用 {{ form_widget(form.price.vars.currency) }} 只是显示错误。

是否有已知的从表单字段中提取货币符号的方法?或者我需要走 Twig Form Theming 路线吗?

恕我直言,没有获取货币符号的特定方法 (check the Form Variables Reference). The default value for the currency is : type: string default: EUR (which correspond to the ISO 4217 code)。

因此您可以简单地将货币设置为空,并且不会呈现任何符号:

$builder
->add('price', MoneyType::class, array('currency'=>''));

您可以使用此 twig 正则表达式显示货币符号:

{{ form.price.vars.money_pattern | replace({ '{{ widget }}':''}) | raw }}