Ошибка JS компонента Joomla 3.0 в бэкэнде

Я разрабатываю компонент Joomla 3.0. В качестве примера я скачал компонент com_hello из документации Joomla.

Ошибка, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю флажок в списке представления, я получаю сообщение об ошибке TypeError: b is null. Эта ошибка произошла где-то в core.js.

Обычно в 2.5, если я использовал код JHtml::_('grid.id',$i,$item->id); и имел поле <input type="hidden" name="boxchecked" value="0" /> в моей форме, все работало нормально.

Я также просмотрел некоторые компоненты ядра Joomla, но не нашел чего-то отсутствующего или какой-то другой ошибки.

Вот код default.php моего представления:

<?php

// NO DIRECT ACCESS TO THIS FILE
defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.tooltip');
?>
<form action="<?php echo JRoute::_('index.php?option=com_simplesuite'); ?>" method="post" name="adminForm">
    <table class="adminlist">
        <thead>
            <tr>
                <th>ID</th>
                <th><input type="checkbox" name="checkall-toggle" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" value="" onclick="Joomla.checkAll(this);" /></th>
                <th><?php echo JText::_('COM_SIMPLESUITE_TAGCLOUD_ADMINISTRATOR_LIST_NAME'); ?></th>
                <th><?php echo JText::_('COM_SIMPLESUITE_TAGCLOUD_ADMINISTRATOR_LIST_TAGS'); ?></th>
                <th><?php echo JText::_('COM_SIMPLESUITE_TAGCLOUD_ADMINISTRATOR_LIST_ACTIONS'); ?></th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($this->items as $i => $item) : ?>
            <tr class="row<?php echo $i%2; ?>">
                <td><?php echo $item->id; ?></td>
                <td><?php echo JHtml::_('grid.id',$i,$item->id); ?></td>
                <td><?php echo $item->name; ?></td>
                <td><?php echo ($item->tags) ? $item->tags : JText::_('COM_SIMPLESUITE_TAGCLOUD_ADMINISTRATOR_LIST_EMPTY'); ?></td>
                <td><a href="#">W</a><a href="#">X</a></td>
            </tr>
            <?php endforeach; ?>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4"><?php echo $this->pagination->getListFooter(); ?></td>
            </tr>
        </tfoot>
    </table>
    <div>
        <input type="hidden" name="task" value="" />
        <input type="hidden" name="boxchecked" value="0" />
        <?php echo JHtml::_('form.token'); ?>
    </div>
</form>

person Thomas Venturini    schedule 20.10.2012    source источник


Ответы (5)


Попробуйте добавить это в начало вашего скрипта:

window.addEvent('domready', function () {
    if (typeof jQuery != 'undefined' && typeof MooTools != 'undefined') {

            Element.implement({
                slide:function (how, mode) {
                    return this;
                }
            });
        }
    });

Вероятно, это конфликт mootols, который решается командой разработчиков.

person McRui    schedule 21.10.2012
comment
Насколько я понимаю, вы используете компонент com_hello. Что ж, плохая новость заключается в том, что com_hello не предназначен для правильной работы с текущей версией платформы — 3.0.1. Это плохая адаптация старого компонента, который даже не использует фреймворк начальной загрузки. Боюсь, чтобы заставить его работать, вам придется почти перекодировать его с нуля. Правильный способ кодирования представления по умолчанию в этом случае отличается от того, который используется в файле com_hello. Взгляните, например, на вид com_weblinks по умолчанию, и вы поймете, что, возможно, вы теряете драгоценное время на этом. - person McRui; 22.10.2012


Попробуйте использовать это:

<?php echo JHtml::_('grid.checkall'); ?>

вместо этого:

<input type="checkbox" name="checkall-toggle" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" value="" onclick="Joomla.checkAll(this);" />

Это сработало для меня.

person John Linhart    schedule 14.10.2013
comment
Это сработало и для меня, я попытался внести изменения в плагин Joomla com_hello - person atul-tagra; 18.01.2014

Добавьте id="adminForm" в форму. Я трачу время, чтобы найти его, была та же проблема.

Формы с name="adminForm" теперь также требуют id="adminForm".

видеть:

http://docs.joomla.org/Potential_backward_compatibility_issues_in_Joomla_3_and_Joomla_Platform_12.2#JavaScript

person user2985865    schedule 13.11.2013

Я добавил следующее поле, и оно сработало для меня

<input type="hidden" name="boxchecked" value="" />
person njmwas    schedule 17.04.2015