Есть ли способ получить доступ к пользовательским переменным Joomla 1.5 (например, к идентификатору пользователя) из приложения Flex 4 с помощью службы данных PHP? - PullRequest
0 голосов
/ 15 октября 2010

Я написал скрипт (в двух файлах), который правильно отображает идентификатор пользователя 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

Я очень озадачен этой ошибкой и буду признателен за любые предложения, которые может предложить сообщество stackoverflow.

Большое спасибо!

Zach

1 Ответ

1 голос
/ 12 января 2011

Привет Раван,

Я нашел решение, но оно немного хакерское, поэтому я не знаю, хотите ли вы его использовать.

В приложении 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 включить флешвар с именем «id», и он равен идентификатору пользователя, который мы извлекли из Joomla.

В заключение, теперь вы можете использовать переменную Flex "userid" (определенную в методе Flex, которую мы написали выше) для таких вещей, как получение пользовательских данных из вашей базы данных. Я называю это решение хакерским, потому что каждый раз, когда вы создаете новую версию релиза, вы должны изменить оболочку html на php и изменить ее, как мы делали выше.

Надеюсь, это поможет.

Приветствия

Zach

...