com_ajax - LogicException:模块未发布,您无权访问它

Sas*_*sha 2 joomla joomla3.0

我制作了简单的模块(联系表单),当我尝试通过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