Joomla - Как подключиться к БД после получения данных с помощью Ajax в php файле - PullRequest
0 голосов
/ 18 мая 2011

Я создаю компонент для Joomla 1.6.

У меня проблема с подключением к базе данных.

Я отправил данные в php-файл с именем rating.php с помощью ajax; Данные без проблем отправляются в файл. Однако данные не отправляются, если я покидаю линию

defined('_JEXEC') or die('Restricted access');

но я получаю сообщение «ограниченный доступ».

Во-вторых, даже когда я закомментирую предыдущую проверку, я не могу подключиться к своей базе данных внутри этого файла php, очевидно, потому что я не могу вызвать переменные Joomla (например, getDBO ()) внутри файла. Что я могу сделать, чтобы решить эти 2 проблемы?

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

Если вы разрабатываете компонент, всегда полезно отправлять запросы через «index.php», а не через какой-либо другой файл.Таким образом, вы уверены, что фреймворк загружен, и вы можете использовать любые его функции при обработке запроса.Другим преимуществом является более простое обслуживание (особенно для больших расширений), поскольку легче следовать рабочему процессу, когда у вас одинаковая точка входа для всех запросов.

0 голосов
/ 19 мая 2011

Joomla будет устанавливать _JEXEC только когда вы просматриваете свой сайт через index.php.Другими словами, Joomla не будет ничего делать с файлами, которые находятся «вне» Joomla._JEXEC не будет установлен и база данных не будет подключена.

Чтобы решить эту проблему, я бы добавил страницу Joomla, чтобы база данных была загружена:

<?php
ob_start();
require 'index.php';
ob_end_clean();
// Rating code
?>

Этот кодвключает домашнюю страницу вашего сайта и использует буферизацию вывода , чтобы фактически не выводить ваш сайт.Вам не нужно проверять _JEXEC, потому что единственная причина, по которой он используется, - убедиться, что кто-то не имеет прямого доступа к файлу, не пройдя через Joomla.В вашем случае _JEXEC не имеет значения.

Чтобы сделать ваш скрипт быстрее, замените index.php ссылкой на внутреннюю страницу с минимальным содержанием.Домашние страницы, как правило, медленнее, чем внутренняя страница.

Я не проверял этот код, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...