Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача информации между контроллерами 
:(
    Опции темы
lerguide
Дата 17.5.2011, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.10.2008

Репутация: нет
Всего: нет



Подскажите, как принято реализовывать следующую технику:
на странице A пользователь отправляет сообщение. У формы отправки указан обработчик B. После того как B отработает, он перенаправит пользователя назад на страницу A или куда-то на страницу C. При этом на странице А или С нужно будет показать сообщение о том, как прошла обработка.
То есть суть в том, что обработкой форм занимаются отдельные экшены и они не связаны с остальными контроллерами, которые занимаются выводом. 

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

Пишу на CodeIgniter, если что.
PM MAIL   Вверх
bars80080
Дата 17.5.2011, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(lerguide @  17.5.2011,  21:25 Найти цитируемый пост)
- как организовать передачу информации между ними?

почему бы просто не параметром в адресе? 

целевая_страница.php?result=positive&id=147

исходя из адреса можно показать поздравительное сообщение и выбрать введённую информацию для лицезрения

Добавлено через 48 секунд
Цитата(lerguide @  17.5.2011,  21:25 Найти цитируемый пост)
Верный ли путь обособление экшенов?

разделяй и властвуй. любой полностью независимый модуль может использоваться неоднократно в схожих задачах. то есть, это хорошо
PM MAIL WWW   Вверх
lerguide
Дата 17.5.2011, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.10.2008

Репутация: нет
Всего: нет



Цитата(bars80080 @  17.5.2011,  21:55 Найти цитируемый пост)
почему бы просто не параметром в адресе? 

целевая_страница.php?result=positive&id=147


URL имеют вид 
сайт.ру/контроллер/метод/../... 
Поэтому засорять его параметрами не хочется. И если делать так, то нужно централизованно хранить сообщения, ну или как-то жестко о них договариваться.
PM MAIL   Вверх
ksnk
Дата 17.5.2011, 23:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



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

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

Еще один вариант - все ссылки, ведущие на "страницы с возвратом" имеют обработчик клика на javascript'е. Что-нибудь такое (почти по bars80080'у)
Код

$('a.callback').mousedown(function(){
   this.href=this.href+'?ret='+window.location
})

,


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
lerguide
Дата 18.5.2011, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.10.2008

Репутация: нет
Всего: нет



ksnk, спасибо за ликбез. Я так и представлял это, но хотел подтверждения от знающих людей.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0806 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.