首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZF3 - AbstractTranslatorHelper和sprintf

ZF3 - AbstractTranslatorHelper和sprintf
EN

Stack Overflow用户
提问于 2017-04-13 08:33:54
回答 1查看 74关注 0票数 1

我有一个简单的视图助手"Header“,它有两个参数titlesubtitle。我的助手扩展了用于翻译这两个字符串的AbstractTranslatorHelper。

现在我有了这样的情况,我必须在给定字符串中设置一些变量。通常我会用sprintf($this->translate('My string with the variable %s', 'test')来做这件事。但是如何设置我的助手中的字符串和变量,来处理其中的转换。或者我真的需要在设置它之前翻译它?

现在我是这样做的,但我不太喜欢.

代码语言:javascript
复制
$this->header(sprintf($this->translate('title with variable %s'), 'test'), 'subtitle')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-13 09:37:22

你可以做到的

代码语言:javascript
复制
$this->header('title with variable %s', 'subtitle')->setTitleVariables([$variables])->setSubtitleVariables([$subVars]);

为此,您的主要代码是:

代码语言:javascript
复制
class HeaderHelper extends AbstractTranslatorHelper
{
    public function __invoke($title, $subtitle)
    {
        $this->title = $title;
        $this->subtitle = $subtitle;

        return $this;
    }

    public function setTitleVariables(array $variables)
    {
        $this->title = $this->translate(vsprintf($this->title, $variables));
        return $this;
    }

    public function setSubtitleVariables( array $variables)
    {
        $this->subtitle = $this->translate(vsprintf($this->subtitle, $variables));
        return $this;
    }
}

通过调用setTitleVariablessetSubtitleVariables,您可以为这两个字符串传递变量

然后,由您使用已填充的助手来选择如何呈现这些字符串。

但我建议你这样做:

代码语言:javascript
复制
 public function render()
    {
        return "<h1>" . $this->title . "</h1>" . "<h3>" . $this->subtitle . "</h3>";
    }

当然,您可以通过使用.phtml文件或任何您想要的东西来设计它,只要您呈现一个字符串,然后是下面的代码:

代码语言:javascript
复制
$this->header('title with variable %s', 'subtitle')->setTitleVariables([$variables])->render();

会做完所有的事!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43387291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档