Я использую Yii, и у меня есть форма, заключенная в вкладки. На одной из этих вкладок мне нужно поместить ссылку (вызвать controller/action
с параметрами) независимо от содержимого формы. Я пытался использовать CHtml::linkButton
но он не работает.
Кодовая схема формы такова:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'project-form',
'enableAjaxValidation'=>true,
)); ?>
//...input elements
<?php echo CHtml::linkButton('Download',
array(
'submit'=>$this->createUrl('controller/action'),
'params'=>array(
'results'=>CJSON::encode(array('foo'=>'bar'))
))
); ?>
//...other input elements
<?php $this->endWidget(); ?>
Когда я нажимаю на ссылку, ничего не происходит. Если я linkButton
код linkButton
вне формы, он работает правильно.
Есть ли обходной путь для этого?
Похоже, вы пытаетесь использовать кнопку, чтобы пользователь мог загрузить какой-то файл. В этой ситуации AJAX не будет работать, поскольку он не способен сохранять файлы на компьютер пользователя.
То, что вы хотите сделать, это создать только тег привязки. Функция linkButton предназначена для того, чтобы быть кнопкой, которая будет отправлять текущую форму. Если вы используете загрузчик, ниже будет также выглядеть как кнопка.
CHtml::link('Download', array('controller/action', 'myparam' => 'paramvalue'), array('class', 'btn btn-primary'));
Убедитесь, что вы установили правильные заголовки для загрузки файла.
В этом случае вы должны использовать ajaxLink
Пример:
echo CHtml::ajaxLink(
$text = 'Click me',
$url = '/',
$ajaxOptions=array (
'type'=>'POST',
'dataType'=>'json',
'success'=>'function(html){ jQuery("#your_id").html(html); }'
),
$htmlOptions=array ()
);