Передавать в js CButtonColumn переменную Php

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Передавать в js CButtonColumn переменную Php

Сообщение Neuromance »

Добрый день, коллеги.)

У меня есть таблица, в таблице есть кнопки CButtonColumn, мои собственные, не стандартные.
При нажатии на кнопку открывается модальное окно с формой. Нужно скрытое поле формы заполнять идентификатором строки таблицы.
На onclick повесил js. Не могу понять, как бы мне в этот js передавать id-ник каждой строки из php.

Можно конечно переписать базовый класс и в нём воспользоваться evaluateExpression, но возможно есть другое решение?
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Передавать в js CButtonColumn переменную Php

Сообщение yan »

"id-ник каждой строки" это что? даже ничего не передавая уже в js можно через this узнать все о нажатой кнопке и текущей строке
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: Передавать в js CButtonColumn переменную Php

Сообщение Neuromance »

это любое значение массива данных, из которого формируется таблица, которое можно принять за уникальный идентификатор строки.
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: Передавать в js CButtonColumn переменную Php

Сообщение Neuromance »

yan писал(а):"даже ничего не передавая уже в js можно через this узнать все о нажатой кнопке и текущей строке
Это только в том случае, если в таблице присутствует нужное нам значение.
У меня же в таблице информация об id записи не присутствует. Её не нужно показывать пользователям
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Передавать в js CButtonColumn переменную Php

Сообщение yan »

можно поискать как это ид-строки в параметр id тэга строки или ячейки или кнопки запихать и в js доставать, но сходу не скажу как
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: Передавать в js CButtonColumn переменную Php

Сообщение Neuromance »

Решил проблему. Расскажу как, вдруг кому-то пригодится.

Есть класс RCButtonColumn, унаследованный от CButtonColumn.

В нём переопределил метод renderButton

Код: Выделить всё

protected function renderButton($id,$button,$row,$data){
    if(isset($button['optionsExpression'])){
      $optionsExpression = $button['optionsExpression'];
      if(is_array($optionsExpression)){
        foreach($optionsExpression as $optionName=>$optionExpr){
          $button['options'][$optionName] = $this->evaluateExpression($optionExpr,array('data'=>$data,'row'=>$row));
        }
      }
    }
    parent::renderButton($id,$button,$row,$data);
}
 
Вызывается так

Код: Выделить всё

'columns'=>array(
        array('name'=>'AM',           'header'=>'ФИО'),  
        array('name'=>'AD',           'header'=>'Адрес'),
        array('name'=>'ACCKRD_PAYDATE','header'=>'Дата платежа'),  
        array(
          'class'=>'RCButtonColumn',
          'template'=>'{storno}',
          'buttons'=>array(
            'storno' => array(
              'label'=>'Сторно',
              'url'=>'"#"',
              'optionsExpression'=>array(
                'tag'=>'$data["ACCKRD_ID"]',
              ),
              'click'=>'function(){
                alert($(this).attr("tag"));
                $("#stornokrd").dialog("open");
              }',
            ),
          ),
        ),
    ),
 
Таким образом я могу заполнять html-аттрибуты моей кнопки чем-угодно, а при нажатии на неё получать их
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Передавать в js CButtonColumn переменную Php

Сообщение yan »

компоненты плодить тоже не всегда хорошо, как вариант можно ручками ячейку создать используя CDataColumn
Ответить