$user = JFactory::getUser(); по ajax ?

D
На сайте с 28.06.2008
Offline
1101
272

Есть у меня JS где я по своим причинам решил вызывать файл пхп

jQuery.ajax({
type: 'GET',
url: '/templates/packer/main-menu.php',

Так вот в этом пхп файле перестает работать код типа

<?php
if(empty($user->id))
{
echo

Это Джумла.

Добавление $user = JFactory::getUser(); в файл main-menu.php не решает проблему.

Как прокинуть $user = JFactory::getUser(); в файл main-menu.php чтобы там заработала переменная $user?

Пробовал добавить в тот JS нечто типа

public function ajax()
{
$user = JFactory::getUser();
};

тоже не прокатывает.

IL
На сайте с 20.04.2007
Offline
435
#1

1. что в ошибках? В логе или в ответе сервера (если отображение ошибок включить)?

2. А какие include-ы в начале этого файла? Банально JFactory может быть не определён. файл ведь изначально не используется "сам по себе", только в шаблоне.

Теоретически, в .. main-menu.php можно добавить что-то вроде


if (defined(_JEXEC)) {
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define ('JPATH_BASE', dirname(dirname(__DIR__)); // php7 dirname(__DIR__,2);
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
}
/// тут использовать JFactory
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
IL
На сайте с 20.04.2007
Offline
435
#2

if (!defined...
D
На сайте с 28.06.2008
Offline
1101
#3

В начале вызываемого по айкс скрипта прописал

<?php
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);

/* Required files */
require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';
$user =JFactory::getUser();
var_dump ($user);
?>

И положил его в корень. Запускаю главную (скрипт это просто меню) - меню загрузилось, но var_dump показывает что переменная $user не определена.

Что не так?

---------- Добавлено 26.05.2019 в 14:03 ----------

Решил вопрос, нужно было еще добавить

$app = JFactory::getApplication('site');

$app->initialise();

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий