Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Редирект при добавлении коментариев http://forum.kohanaframework.su/viewtopic.php?f=21&t=665 |
Страница 1 из 2 |
Автор: | vchv [ 04 июн 2013, 10:43 ] |
Заголовок сообщения: | Редирект при добавлении коментариев |
Здравствуйте, помогите пожалуйста с такой проблемой - при добавлении комментария все добавляется но как то коряво происходит редирект и не выводится блок с коментами, при этом ошибки не выдает Код:
|
Автор: | Sergey [ 05 июн 2013, 04:18 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
Совет: в таких ситуациях, когда непонятно как оно работает, нужно отсечь всё, оставить голый метод, добавлять требуемый функционал чуть ли не по строчке и смотреть (желательно в отладчик) что получается. Само собой те методы, которыми вы пользуетесь должны быть вам хотя бы поверхностно знакомы. Не достаточно просто скопировать кусок кода и потом удивляться, что происходит какая то магия ) Начните с малого Вопрос на засыпку: Вы используете здесь Request::redirect() и HTTP::redirect(). Почему? В чём их разница? |
Автор: | vchv [ 05 июн 2013, 10:18 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
Sergey писал(а): Вопрос на засыпку: Вы используете здесь Request::redirect() и HTTP::redirect(). Почему? В чём их разница? могу конечно ошибаться, я в программировании не то что бы чайник, самовар наверно вернее будет. Request::redirect() - это запрос к внутренней структуре приложения т.е. находим нужный роут и через него запускаем определенный в нем контроллер. HTTP - обращение к внешнему адресу. Применительно к моей ситуации - у меня после добавления комента запускается именно HTTP и соответственно кохана просто не находит роут комментариев ну и со всеми вытекающими. Код:
Код:
Код:
Сергей благодарю за наводку, поправьте если не так. |
Автор: | WinterSilence [ 05 июн 2013, 13:14 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
хм, он все-таки статический, почему-то мне казалось что наоборот public static function redirect($uri = '', $code = 302) { return HTTP::redirect($uri, $code); } |
Автор: | vchv [ 05 июн 2013, 13:58 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
WinterSilence писал(а): дело было не в бобине.. Controller->redirect($uri) ErrorException [ Parse Error ]: syntax error, unexpected T_OBJECT_OPERATOR неправильный синтаксис, и вообще методом научного тыка, а кохана большая, можно тыкаться хоть до морковкиной завязи. Вообще прекрасно работает и без редиректа, тут проблема скорее в том чтобы сбросить данные введеннве пользователем в форму. |
Автор: | Sergey [ 06 июн 2013, 03:15 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
Я в Gleez в качестве отправной точки использовал Kohana 3.2, многое конечно уже переписано, но всё же. Ниже я опустил некоторые подробности, оставив лишь суть: Основной класс шаблонов Код:
Контролёр комментариев Код:
Многое опущено, код не идеальный, но суть кажется ясна. Это что касается комментариев. А то, что в Kohana 3.3 метод redirect появился у HTTP так это ж сути дела не меняет Или вы хотите асинхронный запрос/ответ? |
Автор: | WinterSilence [ 06 июн 2013, 11:31 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
Sergey Решение на основе $this->request->is_initial() понравилось, я как-то не учел этот момент -сделаю также А сами контроллеры не очень: много действий производится вручную и не логично. Можно все оптимизировать и код контроллеров станет вдвое меньше. Доберусь до дома, покажу свой вариант. Я как раз об этом собирался писать в следующем уроке по созданию cms Код:
для чего? Код:
проще фильтр в орм настроить, чем приводить типы каждый раз Код:
$_POST ? а почему не $this->request->post()? там вроде переменные уже подготовлены Вместо: Код:
можно же было сделать универсальный вариант: Код:
или Код:
а array('action' => 'list') в default прописать Код:
тоже можно было сделать универсальным: задание $view перенести в before, задание ответа в after, место 'comment/form' Код:
Код:
в before забиндить Код:
это должно быть в модели код сохранения в метод модели инкапсулировать, например: Код:
|
Автор: | WinterSilence [ 06 июн 2013, 11:59 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
vchv Код:
но надо понимать, что данный контроллер по сути выступает виджетом и должен вызываться в основном контроллере Код:
если что можно попробовать вариант который учитывает редиректы Код:
я кстати понял почему я так был уверен, что redirect в контроллере не статичная функция - опечатка в мануале: http://kohanaframework.org/3.3/guide/kohana/upgrading#redirects-http-300-301-302-303-307 http://kohanaframework.org/3.3/guide-api/Controller#redirect |
Автор: | Sergey [ 07 июн 2013, 02:02 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
WinterSilence писал(а): SergeyА сами контроллеры не очень: много действий производится вручную и не логично. Можно все оптимизировать и код Ну, во первых я знаю Я же писал сам об этом выше. А во вторых, у нас сейчас в Gleez чётко обозначенный план действий, и оптимизация кода конролёра комментариев, даже не в первой десятке. Очень много работы в связи с тем, что мы переходим на использование сторонних (открытых) библиотек. В частности большинство контролёров будет "общаться" с ядром/базой данных/клинтом асинхронно |
Автор: | WinterSilence [ 07 июн 2013, 03:04 ] |
Заголовок сообщения: | Re: Редирект при добавлении коментариев |
ну так у вас на Gleez_Template базируются и другие контроллеры, в конечном итоге ведь задача в создании cms к которой сторонние программисты быстро и просто смогут добавлять разделы\модули, по крайней мере если планируете коммерческое\массовое применение. Ну если учесть, что в качестве ядра Кохана, то первый шаг уже сделан) А что планируете использовать? Асинхронно в данном случае через AJAX? |
Страница 1 из 2 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |