【问题标题】:Is it possible to echo any variable inside JText::_ if so how是否可以在 JText::_ 中回显任何变量,如果可以的话
【发布时间】:2012-03-08 09:57:42
【问题描述】:

是否可以在 JText 中打印变量

ie:- 我需要打印 $email 来测试它是 nil 还是有价值...

$this->setMessage(JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS'));

【问题讨论】:

    标签: php joomla joomla2.5


    【解决方案1】:

    如果你想在字符串中间或几个变量中使用变量,这里有一个例子:

    $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
    

    【讨论】:

      【解决方案2】:

      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);
      

      【讨论】:

      • 不,我还需要附加 $email ,因此输出必须是 JText 内的值 + 存储在 $email 中的电子邮件
      【解决方案3】:

      COM_USERS_REGISTRATION_ACTIVATE_SUCCESS 正在替换为消息的语言定义。如果你打破它,Joomla 将无法识别它。

      如果需要,您可以将变量附加到该消息:

      $this->setMessage(JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS') . $email);
      

      如果需要,甚至可以省略 JText

      $this->setMessage('some message, email: ' . $email);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        • 2011-10-15
        • 1970-01-01
        相关资源
        最近更新 更多