Yii независимая ссылка Кнопка не работает в тегах формы

0

Я использую 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 вне формы, он работает правильно.

Есть ли обходной путь для этого?

Теги:
hyperlink
yii

2 ответа

0
Лучший ответ

Похоже, вы пытаетесь использовать кнопку, чтобы пользователь мог загрузить какой-то файл. В этой ситуации AJAX не будет работать, поскольку он не способен сохранять файлы на компьютер пользователя.

То, что вы хотите сделать, это создать только тег привязки. Функция linkButton предназначена для того, чтобы быть кнопкой, которая будет отправлять текущую форму. Если вы используете загрузчик, ниже будет также выглядеть как кнопка.

CHtml::link('Download', array('controller/action', 'myparam' => 'paramvalue'), array('class', 'btn btn-primary'));

Убедитесь, что вы установили правильные заголовки для загрузки файла.

  • 0
    Мне нужно будет отправить запрос POST, но, насколько я видел, это позволяет мне просто выполнить запрос GET.
  • 0
    Если я не буду отправлять параметры, ваше решение будет работать.
Показать ещё 1 комментарий
0

В этом случае вы должны использовать ajaxLink

Пример:

echo CHtml::ajaxLink(
$text = 'Click me', 
$url = '/', 
$ajaxOptions=array (
    'type'=>'POST',
    'dataType'=>'json',
    'success'=>'function(html){ jQuery("#your_id").html(html); }'
    ), 
$htmlOptions=array ()
);
  • 0
    Контроллер / действие в моем случае должно генерировать и напрямую загружать файл с расширением HTML2PDF. К сожалению, AJAX-подход не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню