Есть ли способ получить доступ к пользовательским переменным 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

Другие вопросы по тегам