Можно ли отобразить любую переменную внутри JText :: _, если да, то как - PullRequest
2 голосов
/ 08 марта 2012

Можно ли напечатать переменную внутри JText

, то есть: - мне нужно напечатать $ email, чтобы проверить, имеет ли оно значение nil или имеет значение ...

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

Ответы [ 3 ]

6 голосов
/ 19 декабря 2012

И если вы хотите использовать переменную в середине строки или несколько переменных, вот пример для этого:

$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
0 голосов
/ 08 марта 2012

COM_USERS_REGISTRATION_ACTIVATE_SUCCESS заменяется определением языка сообщения.Если вы разберетесь с этим, Joomla не распознает его.

Вы можете добавить переменные к этому сообщению, если хотите:

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

Или даже опустить JText, если вам нужно

$this->setMessage('some message, email: ' . $email);
0 голосов
/ 08 марта 2012

Класс JText имеет статический метод '_', который преобразует передаваемый в него строковый аргумент в другую строку, используя языковые файлы и настройки, соответствующие контексту. Если вы хотите увидеть, что передается в setMessage, вы можете просто попробовать:

echo 'DEBUG setMessage argument: "'.JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS').'"';

Если вы обнаружите, что это показывает, что _ ничего не возвращает, то это, вероятно, признак того, что в используемых языковых файлах нет записи для 'COM_USERS_REGISTRATION_ACTIVATE_SUCCESS'.

EDIT:

Если вам нужно добавить $email, просто сделайте это:

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