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

问题描述 投票:0回答:1

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

类型错误:传递给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 * / private $ translator;

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

/**
 * {@inheritdoc}
php octobercms
1个回答
0
投票

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

在新版本中,他们已经实现了适当的界面,所以新版本应该可以使用。

回购中的旧代码

class TimeDiffTranslator extends Translator

回购中的新代码

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

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

更新


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

去设置 - 插件和更新image1

检查更新image2

申请更新iamge3

如果它不起作用,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.