0

我在编辑或创建时遇到了 SonataAdminBundle 的问题:

Symfony\Component\Locale\Stub\StubNumberFormatter::getSymbol() 没有实现。请安装“intl”扩展以获得完整的本地化功能。

或者

致命错误:在第 157 行的 F:\xampp\htdocs\Symfony2\vendor\symfony\symfony\src\Symfony\Component\Locale\Locale.php 中找不到类“ResourceBundle”

我无法在我的基本主机中安装 php 扩展

我发现了这个,但它只在NumberFormatter被调用时才起作用,显然我必须创建调用 intl 扩展所需的每个类,但我在这里要求专家查看解决方案/解决方法/建议的任何其他方法,以便在没有 intl 扩展的情况下工作

4

1 回答 1

0

问题是函数 getSymble 没有在 Symfony\Component\Locale\Stub\StubNumberFormatter 中定义。这个方法抛出一个异常,这是它的主体:

  public function getSymbol($attr)
{
    throw new MethodNotImplementedException(__METHOD__);
}

应该实施以消除此异常,您可以像这样修改:

        public function getSymbol($attr)
    {
    switch($attr) {
      case self::CURRENCY_SYMBOL:
        return '$';
      case self::DECIMAL_SEPARATOR_SYMBOL:
        return '.';
      case self::DIGIT_SYMBOL:
        return '#';
      case self::EXPONENTIAL_SYMBOL:
        return 'E';
      case self::GROUPING_SEPARATOR_SYMBOL:
        return ',';
        ;
  }

这个修改对我来说很好,我遇到了同样的问题。但是如果你通过 composer 升级你的 symfony 版本,你可能会丢失你的修改。

于 2014-05-25T13:31:05.563 回答