Есть ли способ получить доступ к пользовательским переменным Joomla 1.5 (например, к идентификатору пользователя) из приложения Flex 4 с помощью службы данных PHP?
Я написал скрипт (в двух файлах), который правильно отображает идентификатор пользователя Joomla, например:
//this is testy.php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$id = JFactory::getUser()->id;
Вышеуказанный файл находится в корневой папке Joomla. Другой файл находится в другом каталоге и выглядит следующим образом:
//this is testid.php
include '../../joomla/testy.php';
echo $id;
Однако в этом и заключается проблема, когда я меняю "echo" на "return" и помещаю второй фрагмент кода в мой файл скрипта Flex 4 Data Service, как это...
function getUserId() {
include '../../joomla/testy.php';
return $id;
}
... Я получаю ошибку Flex, которая говорит это:
Fatal error: Class 'JRequest' not found in /var/www/html/joomla/libraries/joomla /import.php on line 33
Я очень смущен этой ошибкой и был бы признателен за любые предложения, которые может иметь сообщество stackru.
Спасибо!
Zach
1 ответ
Привет Раван,
Я нашел решение, но оно немного хакерское, поэтому я не знаю, хотите ли вы его использовать.
В своем приложении Flex добавьте две вещи. Сначала метод, который выглядит так:
private function initVars():void {
userid = FlexGlobals.topLevelApplication.parameters.id;
}
Затем добавьте эту строку в заголовок приложения:
creationComplete="initVars()"
Как и в оригинальном вопросе, включите файл "testy.php" в каталог Joomla. После создания сборки выпуска приложения Flex откройте HTML-файл переноса для этого приложения (находится в каталоге сборки выпуска). Измените расширение этого файла на ".php". Затем в этом недавно созданном PHP-файле добавьте следующие строки (ПРИМЕЧАНИЕ: возможно, вам придется изменить движение вашего каталога, чтобы оно соответствовало вашей схеме каталогов):
<?
include '../../joomla/testy.php';
idVar $id;
?>
В файле сборки выпуска вы найдете следующую строку:
var flashvars = {};
Flex позволяет нам включать внешние переменные в наше приложение. Итак, прямо под этой строкой добавьте новую строку, таким образом:
flashvars.id = "<?php echo $idVar; ?>";
Теперь мы сказали нашему приложению Flex включить flashvar с именем "id", и он равен идентификатору пользователя, который мы извлекли из Joomla.
В заключение, вы можете теперь использовать переменную Flex "userid" (определенную в методе Flex, который мы написали выше) для таких вещей, как получение пользовательских данных из вашей базы данных. Я называю это решение хакерским, потому что каждый раз, когда вы создаете новую сборку релиза, вы должны изменить оболочку html на php и изменить ее, как мы делали выше.
Надеюсь это поможет.
Ура,
Zach