com_ajax - LogicException:模块未发布,您无权访问它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了com_ajax - LogicException:模块未发布,您无权访问它相关的知识,希望对你有一定的参考价值。
我制作了简单的模块(联系表单),当我尝试通过AJAX访问它时出现以下错误:
LogicException:模块mod_contact_us_form未发布,您无权访问它,或者它未分配给当前菜单项
这是我用来访问它的网址:
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调用(模块= contact_us_form部分除外)。第一个模块正常工作(此模型未转动,也未与新模块一起安装)。什么似乎有问题?
编辑:
我找到了解决方案 - 似乎当您将模块分配给特定页面时,它不会将其注册为已发布。但是,如果您选择除了所选页面以外的所有页面,然后仅将其分配给欲望菜单,它会将其注册为已发布,它将起作用。
要访问指定给菜单分配的模块,您还必须将Itemid添加到url,如index.php?option = com_ajax&format = raw&module = contact_us_form&Itemid=123
我不太确定,但我认为com_ajax
Joomla中有一个错误,将在下一个版本中解决。
同时尝试将模块重命名为
contact_us_form
=> contactusform
。
另一种方法是应用补丁。请参阅Component Patchtester for Testers并应用修补程序ID:2133
https://github.com/joomla/joomla-cms/pull/2133
希望这可以帮助!
看来,当您发送表单时,您的模块尚未在BackEnd中发布。
以上是关于com_ajax - LogicException:模块未发布,您无权访问它的主要内容,如果未能解决你的问题,请参考以下文章
LogicException:请确保已安装并启用 PHP Redis 扩展
Laravel手记:执行route:cache时报LogicException