Я сделал простой модуль (контактную форму), и когда я пытаюсь получить к нему доступ через AJAX, я получаю следующую ошибку:
LogicException: модуль mod_contact_us_form не опубликован, у вас нет к нему доступа или он не назначен текущему пункту меню
Это URL-адрес, который я использую для доступа к нему:
index.php?option=com_ajax&format=raw&module=contact_us_form
Это вспомогательный класс:
class modContactUsFormHelper
{
public function getParams($instance = 'mod_contact_us_form')
{
jimport('joomla.application.module.helper');
$module = JModuleHelper::getModule($instance);
$moduleParams = new JRegistry;
$moduleParams->loadString($module->params);
return $moduleParams;
}
public static function sendEmail($data)
{
$mailer = JFactory::getMailer();
$params = static::getParams();
$mailer->setSender($data['email']);
$mailer->addRecipient($data['kancelarija']);
$mailer->setSubject($data['tema']);
$body = '<h3>' . $data['tema'] . '</h3>';
$body .= '<p>' . $data['ime'] . ' вас је контактирао са следећим питањем:</p>';
$body .= '<p>' . $data['pitanje'] . '</p>';
$body .= '<p>Контакт email адреса: ' . $data['email'] . '</p>';
$mailer->setBody($body);
$mailer->send();
}
public static function getAjax()
{
$data = modContactUsFormHelper::cleanData();
modContactUsFormHelper::sendEmail($data);
echo 'Kontakt Forma';
}
public static function cleanData()
{
$input = JFactory::getApplication()->input;
$data = array(
'name' => $input->get('ime', '', 'string'),
'email' => $input->get('email', '', 'string'),
'tema' => $input->get('tema', '', 'string'),
'pitanje' => $input->get('pitanje', '', 'string'),
'kancelarija' => $input->get('contact')
);
return $data;
}
}
// END OF CLASS modContactUsFormHelper
Часть, которая меня смущает - я сделал аналогичный модуль (это своего рода обновленный модуль по сравнению с моим первым), и я использую тот же вызов для AJAX (кроме части module=contact_us_form). Первый модуль работает без проблем (эта модель не переворачивалась и не устанавливалась вместе с новой). Что кажется проблемой?
ИЗМЕНИТЬ:
Я нашел решение. Кажется, что когда вы назначаете модуль определенной странице, он не регистрирует его как опубликованный. Но если вы выберете На всех страницах, кроме выбранных, а затем назначите его только для меню желаний, он зарегистрирует его как опубликованный и будет работать.