Передача данных для просмотра при использовании перенаправления в cakephp - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть две формы в одном представлении, изменить профиль и сменить пароль.Я установил действие формы changepassword на changePassword, и я использую

$this->autoRender = false; 
$this->render("index");
$this->redirect("index#chngPassTab");

, но я не могу установить некоторую переменную для просмотра из-за перенаправления.Я не хочу использовать сессию.Все, что я хочу, чтобы установить некоторые переменные на основе условий в действии контроллера, получить эти значения переменных в поле зрения, и когда страница перезагружается после обратной передачи, должна быть выбрана вкладка пароля для того, что я использовал $this->redirect("index#chngPassTab");

Пожалуйста, помогите мне наилучшим образомчтобы исправить эту проблему.Спасибо.

Ответы [ 4 ]

0 голосов
/ 22 апреля 2011

; было бы проще настроить jquery для обработки изменений, основанных на данных, которые вы анализируете в представлении?

так, например, после того, как вы делаете сообщение, ваш $whatever_variable имеет значение

тогда, по вашему мнению,

<script>
 <?php if(!empty($whatever_variable): ?>
     $('.tabs').tabs('select', '#chngPassTab');; //or whatever plugin yu are using
<?php endif?>
</script>

РЕДАКТИРОВАТЬ: мой плохой, просто перечитайте ваш вопрос и с уверенностью заявите, что ваше действие поста отличается от вашего взгляда.В этом случае отправьте сообщение в контроллер индекса, а затем из действия контроллера passpassowrd, которое возвращает все, что вы хотите, чтобы оно вернуло.или используйте сеансы.

0 голосов
/ 21 апреля 2011

Я думаю, вам нужно выполнить некоторую обработку в контроллере индекса при перенаправлении на него. Любые элементы, которые были сохранены при обработке формы, будут доступны в базе данных, и если вы обрабатываете что-либо на основе URL-адреса, вы можете сделать это перед рендерингом.

Plus:

$this->autoRender(false);

остановит ваш контроллер от рендеринга, но затем вызовет

$this->render("index");

будет пытаться отобразить ваше представление индекса, но вызовет

$this->redirect("index#chngPassTab");

переопределит его и перенаправит, перенаправление нужно только в этом случае, вызов рендеринга делается бесполезным.

0 голосов
/ 21 апреля 2011

Http не имеет состояния по дизайну. Если вы перенаправите данные для последнего запроса больше нет. Вот почему сессии были изобретены.

Если вы хотите, чтобы данные отображались, прекратите использование перенаправления.

Также нет смысла вызывать рендер, и редирект никогда не будет отрисован.

0 голосов
/ 21 апреля 2011

Попробуйте это в функции контроллера:

$this->set('name_of_variable', {YOUR DATA HERE});

Затем в представлении вы можете получить доступ к переменной:

<?php echo $name_of_variable; ?>
...