Решено Template admin:forum_type_config_suggestion: [E_USER_WARNING] Accessed unknown getter 'allow_xxx' on XF:Forum[4]

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
2.2

susl16c

Проверенные
Сообщения
84
Реакции
12
Баллы
1,710
Подскажите расширит Entity
Код:
class Forum extends XFCP_Forum {   

    public static function getStructure(Structure $structure)
    {
        $structure = parent::getStructure($structure);
      
        $structure->columns['allow_xxx'] = ['type' => self::BOOL, 'default' => false, 'api' => true],
        $structure->getters += ['allow_xxx' => true];
      
        return $structure;   
    }   

}
Дописал в контроллер админ:
Код:
        $forumInput = $this->filter([
            'allow_xxx' => 'bool',
            'allow_posting' => 'bool',
            'moderate_threads' => 'bool',
            'moderate_replies' => 'bool',
            'count_messages' => 'bool',
            'find_new' => 'bool',
            'allowed_watch_notifications' => 'str',
            'default_sort_order' => 'str',
            'default_sort_direction' => 'str',
            'list_date_limit_days' => 'uint',
            'default_prefix_id' => 'uint',
            'require_prefix' => 'bool',
            'min_tags' => 'uint',
            'allow_index' => 'str'
        ]);
Добавил поле в шаблон forum_type_config_suggestion:
Код:
$0
<xf:checkboxrow>
    <xf:option
        name="allow_partner"
        selected="{$forum.allow_xxx}"
        label="{{ phrase('allow_suggestions_to_be_partner') }}"
        hint="{{ phrase('if_disabled_users_may_only_upvote_partner') }}" />
</xf:checkboxrow>
Дописал после создавать при установке в базе оно есть, но при создании или редактировании нечего не пишется в базу, контроллер и ентиту расширил. Что я упустил ?
 
Решение
Вот тут разве я не указываю расширение класс ?
Ксен не на силе магии работает.
Вы-то указываете, но движку нужно сообщить ещё, что у Вас есть такой-то класс, и что он расширяет - такой-то. Это делается через админку.

Короче не видя целиком всего того, что Вы делаете, совет дать крайне проблематично. На первый взгляд у Вас просто структура не расширилась. Почему она не расширилась - вопрос хороший. У меня первая мысля была "не объявлено расширение класса". Раз Вы утверждаете, что добавили расширение, то пока даже хз, куда смотреть) Разве что "тот ли класс расширяется".
Подскажите расширит Entity
Код:
class Forum extends XFCP_Forum {  

    public static function getStructure(Structure $structure)
    {
        $structure = parent::getStructure($structure);
     
        $structure->columns['allow_xxx'] = ['type' => self::BOOL, 'default' => false, 'api' => true],
        $structure->getters += ['allow_xxx' => true];
     
        retu
[CODE=php]public function getAllowXxx()
{
    // логика геттера
}
Код:
        $forumInput = $this->filter([
            'allow_xxx' => 'bool',
            'allow_posting' => 'bool',
            'moderate_threads' => 'bool',
            'moderate_replies' => 'bool',
            'count_messages' => 'bool',
            'find_new' => 'bool',
            'allowed_watch_notifications' => 'str',
            'default_sort_order' => 'str',
            'default_sort_direction' => 'str',
            'list_date_limit_days' => 'uint',
            'default_prefix_id' => 'uint',
            'require_prefix' => 'bool',
            'min_tags' => 'uint',
            'allow_index' => 'str'
        ]);
Добавил поле в шаблон forum_type_config_suggestion:
Код:
$0
<xf:checkboxrow>
    <xf:option
        name="allow_partner"
        selected="{$forum.allow_xxx}"
        label="{{ phrase('allow_suggestions_to_be_partner') }}"
        hint="{{ phrase('if_disabled_users_may_only_upvote_partner') }}" />
</xf:checkboxrow>
Дописал после создавать при установке в базе оно есть, но при создании или редактировании нечего не пишется в базу, контроллер и ентиту расширил. Что я упустил ?
Потому что геттер нужно реализовывать ещё методом:
Пример:
PHP:
public function getAllowedXxx()
{
    // логика геттера
}

Подробнее можно ознакомится тут:
И вы точно уверены, что вам геттер то нужен? Потому что геттер это не колонка, а саму колонку вы уже описали выше.
 
Потому что геттер нужно реализовывать ещё методом:
Пример:
PHP:
public function getAllowedXxx()
{
    // логика геттера
}

Подробнее можно ознакомится тут:
И вы точно уверены, что вам геттер то нужен? Потому что геттер это не колонка, а саму колонку вы уже описали выше.
Конечно не уверен, я отталкиваюсь от надписи в ошибки и пока не пойму что ей надо.
 
Не вижу упоминания добавления расширений класса для энтити.
Вот тут разве я не указываю расширение класс ?
Код:
class Forum extends XFCP_Forum {
Контроллер таким же макаром расширяется
 
Вот тут разве я не указываю расширение класс ?
Код:
class Forum extends XFCP_Forum {
Контроллер таким же макаром расширяется
А в админке то расширение класса создано?
 
А в админке то расширение класса создано?
Да там есть это, вот думается что то с ентиту может как то по другому нужно его прописывать но пока не дам ума. Просто при сохранении поле не сохраняется в базу.
 
Вот тут разве я не указываю расширение класс ?
Ксен не на силе магии работает.
Вы-то указываете, но движку нужно сообщить ещё, что у Вас есть такой-то класс, и что он расширяет - такой-то. Это делается через админку.

Короче не видя целиком всего того, что Вы делаете, совет дать крайне проблематично. На первый взгляд у Вас просто структура не расширилась. Почему она не расширилась - вопрос хороший. У меня первая мысля была "не объявлено расширение класса". Раз Вы утверждаете, что добавили расширение, то пока даже хз, куда смотреть) Разве что "тот ли класс расширяется".
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу