传递给Twig_Extensions_Extension_Date :: __ construct()的参数1必须实现接口TranslatorInterface

时间:2017-12-14 12:46:16

标签: php octobercms

有人可以帮我解决这个错误。

类型错误:传递给Twig_Extensions_Extension_Date :: __ construct()的参数1必须实现接口Symfony \ Component \ Translation \ TranslatorInterface,给出的VojtaSvoboda \ TwigExtensions \ Classes \ TimeDiffTranslator实例,在plugins \ vojtasvoboda \ twigextensions \

中调用

我从这条消息中得知的是,vojtasvoboda \ twigextensions \ Plugin.php中的getTimeFilter方法传递的类型为'time_diff_traslator',但所需的类型为TranslatorInterface。

$ translator = $ this-> app-> make('time_diff_translator'); $ timeExtension = new Twig_Extensions_Extension_Date($ translator);

下面是Twig_Extensions_Extension_Date的构造函数,您可以看到它采用TranslatorInterface类型的参数,但Plugin.php传递的是另一个参数。     / **      * @var TranslatorInterface      * /     私人$翻译;

public function __construct(TranslatorInterface $translator = null)
{
    $this->translator = $translator;
}

/**
 * {@inheritdoc}

1 个答案:

答案 0 :(得分:0)

我建议更新你的插件,就像你在git diff中看到的旧版本一样,它们没有实现接口(https://github.com/vojtasvoboda/oc-twigextensions-plugin/commit/e6feb178d40ee0d000d0a6f7d2462d6d70e4194e#diff-325d760197f3aac320381cc8ddd52660

在新版本中,他们已经实现了正确的界面,所以新版本应该有效。

  

回购中的旧代码

class TimeDiffTranslator extends Translator
  

repo中的新代码

...
use Symfony\Component\Translation\TranslatorInterface;
...           
TimeDiffTranslator extends Translator implements TranslatorInterface

因此,如果您使用新代码更新扩展程序 TimeDiffTranslator TranslatorInterface 的类型,构造函数将接受它,请使用直接10月cms后端或使用git存储库进行更新你的插件。

<强>更新

请按照给定的屏幕截图,您可以更新您的octber cms版本以及所有插件 (确保您没有进行任何核心更改以及市场地点插件更改,因为此更新将覆盖它们)

  

转到设置 - 插件和更新   image1

     

检查更新   image2

     

申请更新   iamge3

如果不能正常工作,请告诉我。

相关问题