Здравствуйте, подскажите пожалуйста. В самодельном модуле сделал таблицу с checkbox. Таким вот образом -
<?php
foreach ($ArrayObj as $key => $value) {
$options[$value->id][] = changeDateFormat2($value->date,"Y.m.d");
$options[$value->id][] = GetNameofID2($value->authoruid);
$options[$value->id][] = $value->protocolnumber;
$options[$value->id][] = $value->status_sendfca;
$options[$value->id][] = ($value->senddate == "0000-00-00" || $value->senddate == "") ? "" : changeDateFormat2($value->senddate,"Y.m.d");
$options[$value->id][] = $value->send_author;
$options[$value->id][] = $value->filenameEx;
$options[$value->id][] = $value->type;
$options[$value->id][] = $value->zavnumber;
$options[$value->id][] = str_replace(array('/', '\\'), '', $value->vladel);
$options[$value->id][] = $value->inn;
$options[$value->id][] = $value->num_svidet;
$options[$value->id]['#attributes'] = array('class' => array('none_select'));
$header = array(
t('Дата'),
t('Пользователь'),
t('№ протокола'),
t('Статус отправки в ФСА'),
t('Дата отправки'),
t('Отправку выполнил'),
t('Имя файла'),
t('Тип'),
t('Зав. №'),
t('Владелец'),
t('ИНН владельца'),
t('Номер свидетельства'),
);
$form['table_select'] = array(
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#empty' => t('No content available.'),
'#attributes' => array('class' => array('commtable1','table')),
);
$form['fileOpen'] = array(
'#type' => 'submit',
'#value' => 'Сформировать файл для отправки',
'#name' => 'fileOpen',
'#attributes' => array('class' => array('getdb','openexcel')),
'#validate' => array(),
'#ajax' => array(
'wrapper' => 'custom-form-wrapper',
'callback' => 'sendfca_openexcel_callback',
'progress' => array('type' => 'none'),
),
);
}
?>
Подскажите пожалуйста, как сделать так что бы в определенных строчках таблицы, этот checkbox стал неактивным. Там просто при определенных условиях если $value->status_sendfca == "Отправлен", некоторые строки должны быть неактивны. Просто сама идея в том, что строки таблицы, можно выбрать с помощью этих checkbox, и выгрузить, те которые уже были выгружены, выгружать нельзя. Пробовал добавлять класс $options[$value->id]['#attributes'] = array('class' => array('none_select')), но он добавляется именно на строку, а мне до самого checkbox добраться нужно. Подскажите пожалуйста, каким образом это можно сделать ? Заранее благодарю за ответ.
Вложение | Размер |
---|---|
im.jpg | 44.39 КБ |
Комментарии
https://api.drupal.org/api/drupal/developer%21topics%21forms_api_referen...
Ну это да, спасибо. Но проблема в том что, как добраться до checkbox и установить для него #disabled
если задача не решается, или решается слишком сложно, ее надо разбить на задачки по проще и решать поотдельности..
Например будем рассуждать логически, какой смысл в чекбоксе, который нельзя почекбоксить? Я тоже не понимаю..
Разделите таблицу на 2:
1.В первой доступное для выбора
2.Во второй - то что не доступно(просто инфа без чекбоксов)
Еще вариант.. пометьте "некативные" строким css-классом и скройте чекбоксы css-ом..
В рамках друпала это решается только через js, либо написанием собственного элемента.
Понял, спасибо большое
- передать опциональные настройки через # в билд по ключам опций
- используем эти установки для опций в _preprocess & theme для checboxes