是否可以在 JText 中打印变量
即:- 我需要打印 $email 来测试它是否为 nil 或是否有价值...
$this->setMessage(JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS'));
如果你想在字符串中间或几个变量中使用变量,这里有一个例子:
$this->setMessage(JText::sprintf('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS', $name, $email);
在语言文件中:
COM_USERS_REGISTRATION_ACTIVATE_SUCCESS="Hello %s, your email is: %s"
所以最终的输出看起来是($name 和 $email 将被给定的变量值替换):
Hello $name, your email is: $email
JText 类有一个静态方法“_”,它使用适合上下文的语言文件和设置将传递给它的字符串参数转换为另一个字符串。如果您想查看传递给 setMessage 的内容,您可以尝试:
echo 'DEBUG setMessage argument: "'.JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS').'"';
如果您发现这表明 _ 没有返回任何内容,则可能表明正在使用的语言文件中没有“COM_USERS_REGISTRATION_ACTIVATE_SUCCESS”条目。
编辑:
如果您需要追加,$email
那么只需执行以下操作:
$this->setMessage(JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS').$email);
COM_USERS_REGISTRATION_ACTIVATE_SUCCESS
正在被消息的语言定义所取代。如果你打破它,Joomla 将无法识别它。
如果需要,您可以将变量附加到该消息:
$this->setMessage(JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS') . $email);
如果需要,甚至可以省略 JText
$this->setMessage('some message, email: ' . $email);