Новости Joomla

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 8760 Просмотров
*

Worker

  • Новичок
  • 7
  • 0 / 0
setRedirect
« : 19.10.2008, 17:14:30 »
Это отрывок из com_user\controller.php стандартный компонент, на сколько я понял в случае возникновения ошибки происходит редирект на адрес
index.php?option=com_user&view=reset и передается сообщение с тектом ошибки $message. Вот вопрос как мне добраться до этого сообщения из Представления (View) что-бы вывести на экран?
 
// Request a reset
if ($model->requestReset($email) === false)
{
   $message = JText::sprintf('PASSWORD_RESET_REQUEST_FAILED', $model->getError());
   $this->setRedirect('index.php?option=com_user&view=reset', $message);
   return false;
}
*

Worker

  • Новичок
  • 7
  • 0 / 0
Re: setRedirect
« Ответ #1 : 27.10.2008, 10:12:04 »
С проблемой я разобрался:) Так как я новичок то не знал что в шаблоне надо указывать место отображения сообщений <jdoc:include type="message" /> по этому у меня сообщения и не отображались.
*

Worker

  • Новичок
  • 7
  • 0 / 0
Re: setRedirect
« Ответ #2 : 15.01.2009, 16:39:13 »
Я почему то не могу отправлять Личные сообщение, по этому отвечу zaboich сдесь.
Для вывода сообщения в представлении я использую переменную message:
Задача в контроллере:
function edit(){
      $arr = JRequest::get( 'post' );
      $model =& $this->getModel( 'explog' );
      $r = $model->getConfig($arr['cid'][0]);
      if (!$r) {
         $msg = $model->getError(); // Получение сообщения из объекта модели
         JRequest::setVar( 'view', 'explog' );
         JRequest::setVar( 'layout', 'options'  );
         JRequest::setVar('hidemainmenu', 1);
         JRequest::set(JRequest::get( 'post' ), 'post');
         JRequest::setVar( 'message', $msg  ); // Установка переменной message
      }
      JRequest::setVar( 'view', 'explog' );
      JRequest::setVar( 'layout', 'options'  );
      JRequest::setVar('hidemainmenu', 1);
      parent::display();
   }
В представлении:
$arr = JRequest::get( 'post' );
if(!empty($arr['message'])) echo '<h3 style="color:#FF0000">'.$arr['message'].'</h3>'; // Если переменная не пустая вывести сообщение

В модели например:
$db->setQuery( $query );
if(  !$db->query()  ){
   $this->setError( 'INSERT category cfg  '.$db->getErrorMsg() ); // Получение ошибки при обращении к БД и занесение ее в объект модели
   return false;
}
*

zaboich

  • Осваиваюсь на форуме
  • 37
  • 11 / 0
Re: setRedirect
« Ответ #3 : 20.01.2009, 17:00:07 »
Спасибо за ответ.

Цитировать
В представлении:
Код
$arr = JRequest::get( 'post' );
if(!empty($arr['message'])) echo '<h3 style="color:#FF0000">'.$arr['message'].'</h3>'; // Если переменная не пустая вывести сообщение

Мне кажется более красивое решение:
Код
JError::raiseNotice($code, 'message'); // выводит предупреждение 
или
Код
JError::raiseWarning($code,'message'); // выводит сообщение об ошибке 
Как раз выводят стандартное Jooml`овское сообщение (предупрежедение или ошибку), такой подход должен лучше вписываться в произвольный шаблон. Честно говоря зачем нужна переменная $code я не понял, а "message" - это то самое сообщение.

Ну а соответственно если надо сделать редирект, то из контролера
Код
$this->setRedirect('index.php?...', 'сообщение об ошибке');
$this->redirect;
но иногда хочется сделать редирект из Модели или из Вида (представления)
(может, конечно, все проверки надо делать в контроллере, но:
если Вид (с помощью Модели) делается к.л. сложный и долгий запрос к БД, а запрос возвращает к.н. нехороший результат, например нулевой (не ошибку, а именно результат, который не вписывается в логику текущего Вида), то можно сделать редирект прямо из Вида, с объявнением причины, почему пользователя туда послали
Код
JController::setRedirect('/index.php?option=com_component&view=correctView', 'Вы сделали что-то не то или хотите туда куда Вам нельзя, начните с другой стороны' );
JController::redirect();

к сожалению не могу вспомнить какие значения, кроме "message" может принимать третий параметр setRedirect( $url, $msg = null, $type = 'message' )
*

Cerebrum

  • Новичок
  • 7
  • 1 / 0
Re: setRedirect
« Ответ #4 : 28.09.2011, 22:07:16 »
Цитировать
к сожалению не могу вспомнить какие значения, кроме "message" может принимать третий параметр setRedirect( $url, $msg = null, $type = 'message' )
"message" - для вывода информации
"warning" - для вывода предостережений или предупреждений
"error" - для вывода информации об ошибках
Вроде так...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Непонятное поведение setRedirect

Автор b2z

Ответов: 5
Просмотров: 2088
Последний ответ 14.01.2010, 01:57:49
от b2z