Здравствуйте уважаемые форумчане. Возникла такая проблема:
Если пользователь не авторизовался я хочу сделать редирект на страницу ошибки:
if($model->validate() && $model->my_avtorizatings())
{ echo "Пользователь Avtorizovan";
$this->render('index',array('model'=>$model,));
}
else
{
echo "Пользователь не авторизован";
$this->redirect('errors');
}
Происходит такая ошибка:
Цитата |
Cannot modify header information - headers already sent by (output started at Z:\home\yii\www\protected\controllers\UserController.php:29) |
где 29 строка это и есть функция редиректа. Почему нельзя изменить информацию в заголовке? И как это исправить?
Markus111
5.08.2013 - 18:00
поставьте функцию редиректа перед <!DOCTYPE
_____________
Womans in your town
Markus111, у меня доктайп в themes/layoys/main.php а мне редирект нужен в views/user/error.php.
В файле error.php у меня вообще доктайпа нет, ибо в нем выводиться только сообщение об ошибке.
Как это можно обойти?
это можно обойти через output buffering или посмотри внимательно свой html код, удали все пробелы или пустые строки перед редиректом.
убери echo "Пользователь не авторизован";
перед редиректом
ипользуй сессию для хранения таких сообщений.
Michael
6.08.2013 - 08:33
в yii для этого уже есть заготовка -
Yii::app()->user->setFlash(string $key, mixed $value, mixed $defaultValue=NULL)
_____________
There never was a struggle in the soul of a good man that was not hard
А то, что
echo в контроллере, это нормально? Причем прямо перед вызовом рендера... Я уже про редирект и не заикаюсь.
Вот зачем пользовать фреймворк, не разобравшись в его принципах? Не рановато?
Вот они, жертвы моды и new-school. Ничего не понимаю в основах, но фреймворк - это круто и я буду тоже крутой.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Michael
6.08.2013 - 09:16
lodas, почитай про
MVC, это же есть в мануале. Чтобы понять где что делать, где echo пишется.
Вместо этого:
echo "Пользователь Avtorizovan";
$this->render('index',array('model'=>$model,));
надо например так:
$msg = "Пользователь Avtorizovan";
$this->render('index',array('model'=>$model, 'msg' => $msg));
И в виде уже echo $msg;
И все дела.
На twin-а не обращай внимание. Он фанатично не любит чтобы люди разбирались в том, в чем он не разбирается. И прикладывает усилия чтобы их остановить.
Как например сейчас в теме, вместо помощи новичку, помощи в разбирании, он критикует твои занятия с фреймворком.
_____________
There never was a struggle in the soul of a good man that was not hard
lodas как тебе уже писали - нельзя ничего выводить перед редиректом.
Можно использовать, как написал
Michael Yii::app()->user->setFlash();
Но я так понял что ты хочешь сделать вывод на экран и затем, через промежуток времени, перенаправить пользователя, в html это делается так
http://redirekt.info/article/redirekt-na-h...ta-refresh.htmlв yii для этого есть специальный метод регистрации meta тагов
http://www.yiiframework.com/doc/api/1.1/CC...rMetaTag-detailЕсли же ты решил все же вывести ошибку, то для этого есть исключения
http://www.yiiframework.com/doc/guide/1.1/ru/topics.error
Цитата (twin @ 6.08.2013 - 08:40) |
Вот зачем пользовать фреймворк, не разобравшись в его принципах? Не рановато?
|
ага выйдете в окно пожалуйста
По факту, с того и начинается что ставишь задачу и решаешь, пока ты изучаешь принципы фреймворка, он уже пишет, когда ты начнешь писать он уже разобрался и имеет какой никакой опыт.
Тут ты не прав,
ТС не слушай твина, он тут самый жирный троль)
bestxp, небольшая поправочка, пока кто-то изучает принципы ЯЗЫКА, и только потом фреймворка, кто-то другой говнокодит на фреймворках коллективным "разумом", тут как бы каждый сам решает кому верить и кого слушать.
_____________
Стимулятор ~yoomoney - 41001303250491
Цитата (Valick @ 6.08.2013 - 12:46) |
bestxp, небольшая поправочка, пока кто-то изучает принципы ЯЗЫКА, и только потом фреймворка, кто-то другой говнокодит на фреймворках коллективным "разумом", тут как бы каждый сам решает кому верить и кого слушать. |
знания языка ничего не состроят, все языки программирования сделаны для людей, а не компьютера, по сути поняв один язык, сможешь писать на разных, лишь синтаксис понять и некоторые особенности, остальное не так страшно.
По твоим словам полному новичку, который ни бе ни ме лезть во фреймворк опасно( это верно )
Но если человек не новичок, так и изучаются фреймворки, в процессе работы с ним, а не чтением сотли листов доков, а потом только написания хелловорд
Хотя каждый сам выбирает путь
bestxp
Цитата |
ага выйдете в окно пожалуйста |
По сути это вы ходите в окно. Хотя есть двери. Сначала как минимум нужно изучить основы, потом браться за фреймворк.
Я встречал кучу народу, с вашей подачи легко говнокодящих на фреймворках, но не знающих простых вещей. Вот как и ТС, понятия не имеет, что заголовки нельзя отправлять раньше вывода. Да и вообще слово "заголовок" для него наверняка большая новость.
Давайте, давайте. Учите человека "хорошему". Это похоже на то, что маленького ребенка сразу учат высшей математике, забыв рассказать про таблицу умножения. Вышка же рулит!
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
bestxp, не надо в крайности. Для написания программ нужна логика и она мало зависит от конкретного языка, тут я согласен с вами, но для того чтобы знать возможности конкретного языка необходимо его изучать. На форуме не мало примеров когда та или иная задача решается не как положено одним или двумя операторами, а через жЁпу в полсотни строк, это ли не говнокод?
С фреймворками еще сложнее... Сложнее заставить людей читать доки по ним. А нафига? Можно же залезть на форум, да напихать костылей на скорую руку.
___
Особенно заметно отсутствие стремления к изучению у людей которые нахватались верхушек РНР и считают что изучать SQL вроде как и лишнее занятие.
_____________
Стимулятор ~yoomoney - 41001303250491
Прошу прочитать внимательно моих 2 сообщения, а не вырывать слова из контекста.
Там явно указал, если новичек то опасно не зная языки лезь во фреймворк, но зная язык, можно нырять с головой, и изучать в процессе пользования и активного рефакторинга.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.