Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 10363 Просмотров
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Доброго времени!
Чёрт дёрнул переписать свой компонент под Joomla 3 (((
Взял за аналогию сom_content и вроде всё как бы получилось. Выводятся материалы из таблицы сортируются итп.
Но когда кликаешь на редактирование просто белый экран (

В логах веб сервера наблюдаю вот такое вот сообщение:
Call to a member function getKeyName() on a non-object in /test/libraries/legacy/controller/form.php on line 387"

Понимаю что дело в Контроллере форм.
Облазил весь инет, но нормальной документации на joomla3 так и не нашёл (( много отличий получается.

Кто нибудь может подсказать на каком этапе вызывается этот метод?

Вот класс моего контроллера, ошибка где то здесь. Проверил его уже несколько раз всё в с ним в порядке. Аналогичен ком контентовскому только с исправлениями вьюшек.
Код
class MyshopControllerMyshop extends JControllerForm
{
/**
* Class constructor.
*
* @param   array  $config  A named array of configuration variables.
*
* @since   1.6
*/
public function __construct($config = array())
{
parent::__construct($config);
// An article edit form can come from the articles or featured view.
// Adjust the redirect view on the value of 'return' in the request.
if ($this->input->get('return') == 'featured')
{
$this->view_list = 'featured';
$this->view_item = 'myshop&return=featured';
}
}

/**
* Method override to check if you can add a new record.
*
* @param   array  $data  An array of input data.
*
* @return  boolean
*
* @since   1.6
*/
protected function allowAdd($data = array())
{
$user = JFactory::getUser();
                
$categoryId = JArrayHelper::getValue($data, 'catid', $this->input->getInt('filter_category_id'), 'int');
$allow = null;

if ($categoryId)
{
// If the category has been passed in the data or URL check it.
$allow = $user->authorise('core.create', 'com_myshop.category.' . $categoryId);
}

if ($allow === null)
{
// In the absense of better information, revert to the component permissions.
return parent::allowAdd();
}
else
{
return $allow;
}
}

/**
* Method override to check if you can edit an existing record.
*
* @param   array   $data  An array of input data.
* @param   string  $key   The name of the key for the primary key.
*
* @return  boolean
*
* @since   1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{      
$recordId = (int) isset($data[$key])? $data[$key] : 0;
$user = JFactory::getUser();
$userId = $user->get('id');
                
// Check general edit permission first.
if ($user->authorise('core.edit', 'com_myshop.myshop.' . $recordId))
{
return true;
}

// Fallback on edit.own.
// First test if the permission is available.
if ($user->authorise('core.edit.own', 'com_myshop.myshop.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by'])? $data['created_by'] : 0;
if (empty($ownerId) && $recordId)
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);

if (empty($record))
{
return false;
}

$ownerId = $record->created_by;
}

// If the owner matches 'me' then do the test.
if ($ownerId == $userId)
{
return true;
}
}

// Since there is no asset tracking, revert to the component permissions.
return parent::allowEdit($data, $key);
}

/**
* Method to run batch operations.
*
* @param   object  $model  The model.
*
* @return  boolean   True if successful, false otherwise and internal error is set.
*
* @since   1.6
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

// Set the model
$model = $this->getModel('Myshop', '', array());

// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_myshop&view=myshops' . $this->getRedirectToListAppend(), false));

return parent::batch($model);
}

/**
* Function that allows child controller access to model data after the data has been saved.
*
* @param   JModelLegacy  $model  The data model object.
* @param   array         $validData   The validated data.
*
* @return void
*
* @since 3.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}

Но почему то дальше конструктора дело не идёт. Спасиб
« Последнее редактирование: 05.12.2013, 09:54:11 от n_drey »
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #1 : 04.12.2013, 22:20:37 »
потому что ошибка не в контроллере, а в модели
Цитировать
Но почему то дальше конструктора дело не идёт.
а куда оно должно идти?)
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #2 : 04.12.2013, 22:44:28 »
Хммм очень странно. Пересмотрел модель.
Там есть метод:
Код
public function getTable($type = 'Myshop', $prefix = 'JTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}

Название таблицы так и есть myshop, в папке tables файл присутствует

Код
<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * @package     Joomla.Administrator
 * @subpackage  com_content
 */
class MyshopTableMyshop extends JTable
{
/**
* @param   JDatabaseDriver  A database connector object
*/
public function __construct(&$db)
{
parent::__construct('#__myshop', 'id', $db);
}
}



Вроде всё как полагается. (( чтож такое то может быть..
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #3 : 04.12.2013, 22:55:36 »
Код
public function getTable($type = 'TableMyshop', $prefix = 'Myshop', $config = array())
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #4 : 04.12.2013, 23:03:38 »
Увы не помогло (
Принтанул объект $model в методе edit() \libraries\legacy\controller\form.php

Вот такое сообщение в дампе:
Код
[_messageQueue:protected] => Array
 (
     [0] => Array
      (
          [message] => Таблица TableMyshop не поддерживается. Файл не найден.
          [type] => warning
          )

)
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #5 : 04.12.2013, 23:14:03 »
Для и нтереса заглянул ещё раз в модель articles.php там метод getgTable выглядит иначе (собственно оттуда и скопирован был)
Код
/**
* Returns a Table object, always creating it.
*
* @param   type      The table type to instantiate
* @param   string    A prefix for the table class name. Optional.
* @param   array     Configuration array for model. Optional.
*
* @return  JTable    A database object
*/
public function getTable($type = 'Content', $prefix = 'JTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #6 : 04.12.2013, 23:23:20 »
ну ошибся, уже бы сами догадались
Код
public function getTable($type = 'Myshop', $prefix = 'MyshopTable', $config = array())
файл таблицы должен называться myshop.php
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: "PHP Fatal error: Call to a member function getKeyName()
« Ответ #7 : 04.12.2013, 23:25:19 »
Я догадался канеш, но всё равно Хвала Вам )))  Большое спасибо сам бы не нашёл, не очень хорошо знаю структуру классов Joomla.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Ненавижу джумловский database!

Автор effrit

Ответов: 19
Просмотров: 2156
Последний ответ 14.10.2018, 21:28:40
от Aleks.Denezh
[решено] Использование model - setState для фильтра по дате

Автор effrit

Ответов: 8
Просмотров: 2175
Последний ответ 13.10.2018, 19:13:49
от effrit
[Решено] принудительно заполнить поле tags в плагине

Автор Sergeyy

Ответов: 5
Просмотров: 2072
Последний ответ 30.01.2017, 14:40:43
от Sergeyy
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 2004
Последний ответ 26.02.2016, 13:10:37
от IvanTopor
[Решено] Как заполнить Тег <select> из базы?

Автор кодик

Ответов: 9
Просмотров: 2034
Последний ответ 03.12.2015, 20:42:46
от кодик