我正在学习Symfony 5,想知道是否可以将长字符串/“消息”放入控制器(例如这里的AddFlash消息),或者有更好的存储方法。
我认为,我的解决方案可能会成为问题时,我试图把我的网站到一个不同的语言。
class RegisterController extends AbstractController
{
public function index()
{
if ($form->isSubmitted() && $form->isValid()) {
...
$this->addFlash(
'info',
"Congratulations {$user}! You are now a part of growing <b>Symf</b> community! <br>
An activation link to <b>{$user->getEmail()}</b> was <u>not</u> sent because mailing is not implemented.
  <small>(...yet)</small>"
);
}
...
}
}
教程和Symfony文档都是在控制器中做的,但我知道这可能只是一个例子。
所以我的问题是,在控制器的变量/值中放置长字符串是一个好的做法吗或者有更好的方法?
2条答案
按热度按时间toe950271#
更好的做法可能是将它们放在翻译文件中。更多信息https://symfony.com/doc/current/translation.html
cgh8pdjw2#
技术备选方案
要提供Marks建议的翻译的替代方案(现在可能没有用,但将来可能会有用),您还可以使用一个方法或常量:
虽然它确实消除了实际逻辑中的噪音,但这并不好,这么大的const感觉很笨重。如果你想添加更多的文本呢?也许是FAQ的链接?让我们看看私有函数是如何做的:
这也不是很大,因为控制器的任务是控制,而不是管理文本,现在有两个原因要换这个控制器,违反了单一责任。
但(IMO)真实的的解决方案是:
不要使用祝酒词。祝酒词是为短消息,如“成功”或“确认邮件发送”。你现在“滥用”这不是它的目的,你可以感觉到“阻力”的实现。
只需将$user重定向到一个欢迎页面,并使用该页面来解释正在发生的事情。您可以添加一些关于垃圾邮件箱检查的内容,或者添加一些图像来设置氛围。