我制作了简单的模块(联系表单),当我尝试通过AJAX访问它时出现以下错误:
LogicException:模块mod_contact_us_form未发布,您无权访问它,或者它未分配给当前菜单项
这是我用来访问它的网址:
index.php?option=com_ajax&format=raw&module=contact_us_form
Run Code Online (Sandbox Code Playgroud)
这是辅助类:
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
Run Code Online (Sandbox Code Playgroud)
令我困惑的部分 - 我已经制作了类似的模块(这是我第一个升级的模块),我使用相同的AJAX调用(模块= contact_us_form部分除外).第一个模块正常工作(此模型未转动,也未与新模块一起安装).什么似乎有问题?
编辑:
我找到了解决方案 - 似乎当您将模块分配给特定页面时,它不会将其注册为已发布.但是,如果您选择除了所选页面以外的所有页面,然后仅将其分配给欲望菜单,它会将其注册为已发布,它将起作用.
b2u*_*un0 11
要访问指定给菜单分配的模块,您还必须将Itemid添加到url,例如index.php?option = com_ajax&format = raw&module = contact_us_form&Itemid=123
| 归档时间: |
|
| 查看次数: |
2134 次 |
| 最近记录: |