Метод JViewLegacy :: getForm отлично работает в компоненте администратора, а метод не найден в интерфейсе

Я столкнулся с какой-то странной проблемой. У меня есть аналогичная настройка для моего компонента как на внешнем, так и на внешнем компонентах. Вот моя подпись класса вида.

MyComponentViewForm extends JViewLegacy

Теперь в моем view.html.php, я var_dump $this->getForm(),

  • Прекрасно работает и выгружает объект из класса представления компонента admin
  • Fatal error: Call to undefined method ошибка в классе класса front-end.

Любые идеи?

2 голоса | спросил Nagarjun 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 06 Sep 2015 10:24:01 +0300 2015, 10:24:01

2 ответа


0

Я не уверен, насколько это правильно, но я решил эту проблему, добавив прокси-метод в свой view.html.php:

public function getForm()
{
    if (!is_object($this->form))
    {
        $this->form = $this->get('Form');
    }

    return $this->form;
}

Я не уверен, почему класс представления вызывает метод getForm для представления вместо модели. Это все еще неизвестный мне вопрос. Странная часть $this->get('Form') внутри этого прокси-метода снова вызывает метод в модели. Если у кого-нибудь есть лучшее решение, пожалуйста, дайте мне знать, я ненавижу эти хаки.

ответил Nagarjun 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 17 Sep 2015 21:45:06 +0300 2015, 21:45:06
1

это не потому, что проблема в вашем представлении. Вам нужно убедиться, что ваша модель расширяет JModelForm (или JModelAdmin) и реализовать метод getForm:

YourComponentModelForm extends JModelForm
{
    public function getForm($data = array(), $loadData = true)
    {
        $form = $this->loadForm('com_yourcomponent.formname', 'formname', array('control' => 'jform', 'load_data' => $loadData));
        if (empty($form))
        {
           return false;
        }
        return $form;
    }
}
ответил Fedik 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 06 Sep 2015 12:10:45 +0300 2015, 12:10:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132