Настройка returnURL для кнопки CButtonColumn - PullRequest
1 голос
/ 15 марта 2011

Я смотрю на контроллер для кнопки удаления по умолчанию в классе CButtonColumn. Ему удается вернуться на предыдущую веб-страницу после удаления строки CGridView и остаться на той же странице CGridView, в отличие от перехода на первую страницу. Линии, ответственные за это в связанном контроллере, выглядят так:

if (!isset($_GET['ajax'])) $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));

Я хотел бы создать новую пользовательскую кнопку с таким поведением (т. Е. Вернуться к предыдущему виду без сброса нумерации страниц на страницу 1), но простое включение приведенных выше строк кода в соответствующее действие кнопки не дает цели. , Я думаю, что мне нужно как-то отправить этот параметр 'returnUrl', но я не могу понять, как:)

Ответы [ 2 ]

1 голос
/ 14 сентября 2012

Вы можете установить возвращаемый URL с помощью вызова CHtml :: link.Вот пример использования delete

CHtml::link(
    'Delete',
    '#',
     array('submit'=>array('delete','id'=>$model->id),
           'params'=>('returnUrl'=>'controller/action...'), 
           'confirm' => 'Are you sure?'
     )
);

Извлечено из этого ответа Stackoverflow.

1 голос
/ 16 марта 2011

Код returnUrl, который вы просматриваете, использует переменную POST для returnUrl. Чтобы использовать это, вам нужно будет как-то POST. В представлении этот код вызывается из я предполагаю, что в форме есть поле <input name="returnUrl">. Вы должны убедиться, что это поле (заполненное правильным значением URL) находится во всех представлениях, из которых вы отправляете POST, чтобы получить доступ к этой переменной POST в вашем действии контроллера.

Если вы отправляете сообщение на deleteAction через AJAX, я думаю, вы можете установить переменную $_POST['returnUrl'] с помощью функции jQuery AJAX .

Другой способ - использовать переменную CWebUser returnUrl SESSION вместо этой переменной POST. Я никогда не делал этого, но он встроен в Yii, поэтому я предполагаю, что он работает нормально.

Мне никогда не нравились хаки $_POST['returnUrl'], которые все равно генерирует Gii.

ДРУГОЕ, что вы могли бы сделать, возможно, это посмотреть на переменную $_SERVER['HTTP_REFERER'] и использовать ее для перенаправления возврата в вашем deleteAction. Я не знаю, будет ли это установлено правильно, с осложнениями из-за перенаправления / перезаписи 302, которое делает Yii.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...