DeSharky
(Chukasta)
April 23, 2013, 7:54am
1
Есть задача:
У каждой заявки есть кнопка печати, при нажатии которой всплывает окно, в котором должна быть отображена информация о заявке+данные организации, проще говоря внешний вид квитанции о приемке.
Вопрос: Так вот как мне получить хотя бы id заявки, чтобы сформировать запрос к базе?
Окно джаваскриптовое?
Так повесьте хендлер на клик, который будет сначала устанавливать значение хидден-поля, а потом уже показывать окно.
tuschkan
(O Turansky)
April 23, 2013, 7:58am
3
DeSharky:
Есть задача:
У каждой заявки есть кнопка печати, при нажатии которой всплывает окно, в котором должна быть отображена информация о заявке+данные организации, проще говоря внешний вид квитанции о приемке.
Вопрос: Так вот как мне получить хотя бы id заявки, чтобы сформировать запрос к базе?
На кнопку для вызова окна вешайте класс с id или пусть id кнопки = id заявки. По клику передавайте через аякс id заявки в контроллер и оттуда возвращайте данные назад в виде готового html с помощь. RenderPartial и этот html вставляйте в модальное окно.
DeSharky
(Chukasta)
April 23, 2013, 8:01am
4
Можно пример? Окно JS. Я только начинаю углубляться в yii и JS
Код кнопки:
‘print’ => array
(
'label'=>'Печать',
'url'=>'Yii::app()->createUrl("tickets", array(
"print" => $data->id
))',
'imageUrl'=>Yii::app()->request->baseUrl.'/images/print-icon.gif',
'options'=>array('onclick' => '$("#print").dialog("open"); return false;'),
)
DeSharky
(Chukasta)
April 23, 2013, 9:03am
5
Не могу понять - когда пишешь ‘url’=>‘Yii::app()->createUrl(“tickets”, array(“print” => $data->id))’ ид вставляется без проблем.
А когда пишешь ‘options’=>array(‘class’=>$data->id, то ид не вставляется. В чем причина?
ineersa
(Ineersa)
April 24, 2013, 7:19am
6
Могу поделится полезным сниппетом для такого рода задач с cgridview.
Сделайте кнопку приблизительно так :
array(
'name'=>'print',
'type'=>'raw',
'value'=>'$data->getprintbutton()',
),
Затем в модели сделайте метод для возврата кнопки :
public function getprintbutton()
{
return CHtml::link('<img src="'.Yii::app()->baseUrl.'/images/print-icon.gif'."/>',Yii::app()->createUrl("tickets"),array(
'class'=>'print',
'data-id' => $this->id,));
}
Далее делаем javascript сниппет дабы не дописывать каждый раз :
<?php $url = $this->createUrl('ваш url для ajax');
Yii::app()->clientScript->registerScript('initStatus',
"$('.print').on('click',function() {
el = $(this);
$.post ('$url', {id: el.data('id')}
)});",
CClientScript::POS_READY
);?>
После этого в POST вы будете иметь id = $data->id для текущей строки вашего cgridview.
По аналогии можно вытаскивать все что угодно.
DeSharky
(Chukasta)
April 24, 2013, 11:29am
7
ineersa, спасибо, буду пробовать