Компонент не выводит данные из БД
        Добрый день.
Подскажите, пожалуйста, столкнулся с такой проблемой. пишу компонент, простенький. Пользуюсь для обучения уроками от Василия. На данный момент есть пункт меню, в котором есть одна вкладка. По нажатию на кнопку Создать открывается окно, в которое можно занести данные и они сохраняются в БД. Но в самой таблице ничего не выводится и пишет — «Нет данных для вывода».
В отличие от mod Extra у меня в данной таблице лишь 2 поля: id и category_fabrics. Может ли это быть из-за того, что у меня изменены названия полей в таблице (вернее, это наверное из-за этого), но где тогда еще нужно поправить, чтобы сделать именно вывод в таблице своей в админке данных?
    
    
                                                                                
            Подскажите, пожалуйста, столкнулся с такой проблемой. пишу компонент, простенький. Пользуюсь для обучения уроками от Василия. На данный момент есть пункт меню, в котором есть одна вкладка. По нажатию на кнопку Создать открывается окно, в которое можно занести данные и они сохраняются в БД. Но в самой таблице ничего не выводится и пишет — «Нет данных для вывода».
В отличие от mod Extra у меня в данной таблице лишь 2 поля: id и category_fabrics. Может ли это быть из-за того, что у меня изменены названия полей в таблице (вернее, это наверное из-за этого), но где тогда еще нужно поправить, чтобы сделать именно вывод в таблице своей в админке данных?
Комментарии: 16
                Смотрите что вам возвращает connector в браузере (консоль разработчика F12) 
Если там нет ошибки, то проверяйте почему процессор не возвращает (обычно он зовется mgr/getList)
                    Если там нет ошибки, то проверяйте почему процессор не возвращает (обычно он зовется mgr/getList)
                В том то и дело, что консоль девственна…
В процессоре getlist есть такой код:
                    В процессоре getlist есть такой код:
public function prepareQueryBeforeCount(xPDOQuery $c)
    {
        $query = trim($this->getProperty('query'));
        if ($query) {
            $c->where(array(
                'name_cat:LIKE' => "%{$query}%",
            ));
        }
        return $c;
    }Правильно ли я понимаю, что он и отвечает за вывод?            
                Ну конкретно этот кусок отвечает за поиск по полю name_cat
Вам нужно в network вкладку смотреть, при обновлении грида (таблицы) вызывается коннектор вашего компонента, посмотрите, что он возвращает.
                    Вам нужно в network вкладку смотреть, при обновлении грида (таблицы) вызывается коннектор вашего компонента, посмотрите, что он возвращает.
                Коннектор компонента возвращает
                    {success: true, total: «0», results: []}То есть где-то у меня ошибка. Вот куда копать не пойму…
results:[]
success:true
total:«0»
                проверьте классы, наследование, поглядите процессоры других компонентов, возможно вы что-то упустили, точно ли записываются данные в базу            
                    
                Да, данные записываются… Очень странно все…            
                    
                и что в логах нет ошибок? Наверно в getlist сортировка по полю стоит которого нет или чтото подобное…            
                    
                Володя, да, ошибок нет никаких…
Вот в getlist
Вот весь getlist
                    Вот в getlist
public $objectType = 'msFabricsCategory';В данной таблице всего 2 поля: id и category_fabrics
public $classKey = 'msFabricsCategory';
public $defaultSortField = 'id';
public $defaultSortDirection = 'DESC';
Вот весь getlist
<?php
class msFabricsCategoryGetListProcessor extends modObjectGetListProcessor
{
    public $objectType = 'msFabricsCategory';
    public $classKey = 'msFabricsCategory';
    public $defaultSortField = 'id';
    public $defaultSortDirection = 'DESC';
    //public $permission = 'list';
    /**
     * @param xPDOQuery $c
     *
     * @return xPDOQuery
     */
    public function prepareQueryBeforeCount(xPDOQuery $c)
    {
        $query = trim($this->getProperty('query'));
        if ($query) {
            $c->where(array(
                'category_fabrics:LIKE' => "%{$query}%",
            ));
        }
        return $c;
    }
    /**
     * @param xPDOObject $object
     *
     * @return array
     */
    public function prepareRow(xPDOObject $object) {
        $array = $object->toArray();
        return $array;
    }
}
return 'msFabricsCategoryGetListProcessor';            
                Володя, я немного наврал тебе насчет логов, сначала подумал про консоль)) В лога есть матершина такая:
                    [2017-02-04 22:24:25] (ERROR @ /core/xpdo/xpdo.class.php: 1320) Could not get table class for class: msFabricsCategory
[2017-02-04 22:24:25] (ERROR @ /core/xpdo/xpdo.class.php: 1289) Could not get table name for class: msFabricsCategory
[2017-02-04 22:24:25] (ERROR @ /core/xpdo/xpdo.class.php: 1320) Could not get table class for class: msFabricsCategory
[2017-02-04 22:24:25] (ERROR @ /core/xpdo/xpdo.class.php: 1289) Could not get table name for class: msFabricsCategory
[2017-02-04 22:24:25] (ERROR @ /core/xpdo/om/xpdoobject.class.php: 240) Error 42000 executing statement:
Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS `msFabricsCategory` ORDER BY `msFabricsCategory`.`id` DESC LIMIT 20' at line 1
)
                Проверьте map файлы            
                    
                По этому пути?
                    core/components/name_components/model/name_components/mysql/
                Да, проверьте названия классов, таблиц            
                    
                Алексей и Володя, спасибо. Все дело было в том, что в map файлах было 
Спасибо еще раз. Регистр важен значит))
                    $xpdo_meta_map['msfabricsCategory']= array (А во всех процессорах и т.д. я вызывал как
msFabricsCategoryРазница в регистре одной буквы F. Сменил в map файле на
$xpdo_meta_map['msFabricsCategory']= array (И все стало выводиться как положено.
Спасибо еще раз. Регистр важен значит))
                Ругается на синтаксис как я понял. А где этот самый синтаксис можно исправить? В map файлах все так, да там и ошибиться трудно, таблица с одним полем…            
                    
                Ругается на синтаксис SQL потому что xpdo не получил имя таблицы для класса вашего, возможно где-то опечатка в названии класса или таблицы, проверьте внимательно, все ли вы поменяли            
                    
                Да, Алексей, коммент выше, я расписал ситуацию.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.