Как исправить форму таблицы с помощью новых опций - PullRequest
0 голосов
/ 30 апреля 2019

Я создаю табличную форму с разными цветами темы.Все работает нормально, но когда я использую ajax для выбора только своих тем, это показывает, что я не то, чего я жду.Это ломает мой пейджер (который я пока не знаю, как исправить), заголовок (который после ajax не работает и после нажатия на него перенаправляет меня в / system / ajax ....) и строки.Моя главная проблема - строки.Я показываю 8 строк на странице.Когда я выбираю только свои темы, я должен видеть только 4 строки (потому что я получил только 4 темы).После того, как я нажимаю на ajax, он показывает мне 4 темы и 4 пустых ряда с переключателями.Я не могу понять, почему это происходит.Может кто-нибудь помочь с этой проблемой?

Я пытаюсь показать с самого начала 2 строки, но после выбора моих тем отображаются только 2 темы и две другие здесь (пейджер не работает).

$header = array(
        array('data' => 'id', 'field' => 'id', 'sort' => 'ASC'),
        array('data' => 'background'),
        array('data' => 'button'),
        array('data' => 'uid', 'field' => 'uid', 'sort' => 'ASC'),
        array('data' => 'name', 'field' => 'name', 'sort' => 'ASC'),
        array('data' => 'public', 'field' => 'public', 'sort' => 'ASC'),
    );
    $data = db_select('theming_colors', 'n')->extend('TableSort');
    $data = $data->fields('n', array('id', 'background', 'button', 'uid', 'name' , 'public'))
        ->extend('PagerDefault')
        ->limit(8)
        ->condition(db_or() ->condition('n.public', '1')->condition('n.uid', $user->uid))
        ->orderByHeader($header)
        ->execute()
        ->fetchAll();
    $options = array();
    foreach ($data as $node) {
        $options[$node->id] = array($node->id, $node->background, $node->button, $node->uid, $node->name , $node->public);
    }

А вот мой табличный выбор с пейджером:

$form['table_with_buttons'] = array(
        '#type' => 'tableselect',
        '#header' => $header,
        '#options' => $options,
        '#multiple' => FALSE,
        '#ajax' => array(
            'event' => 'change',
            'callback' => 'getactions_list',
            'wrapper' => 'actionlist',
            'method' => 'replace',
            'effect' => 'fade',
        ),
        '#prefix' => '<div id="themetable">',
    );
    $form['pager']['#markup'] = theme('pager');
    $form['pager']['#suffix'] = '</div>';

И функция ajax:

function gettable_list($form, &$form_state){
    global $user;
    switch ($form_state['values']['theme_filter']) {
        case 'my':
            $data = db_select('theming_colors', 'n')->extend('TableSort');
            $data = $data->fields('n', array('id', 'background', 'button', 'uid', 'name' , 'public'))
                ->extend('PagerDefault')
                ->limit(8)
                ->condition('n.uid', $user->uid)
                ->execute()
                ->fetchAll();
            $options = array();
            foreach ($data as $node) {
                $options[$node->id] = array($node->id, $node->background, $node->button, $node->uid, $node->name , $node->public);
            }
            $form['pager']['#markup'] = theme('pager');
            $form['table_with_buttons']['#options'] = $options;
            $ccc = array($form['table_with_buttons'], $form['pager']);
            return $ccc;
            break;
    }
}

Может кто-нибудь помочь или подсказать, где проблема или как исправить хотя бы те строки?(Лучше было бы сказать, как исправить также сортировку и пейджер. Но главная проблема - строки.) Всем спасибо!

...