[Moscow.pm] Mojolicious: render_not_found

Oleg Kostyuk cub.uanic на gmail.com
Ср Мар 16 11:34:47 PDT 2011


Я не пользую Mojolicious, потому могу и ошибаться, но рискну предположить, что
    return $self->render_not_found()
надо делать из sub index(), а не из вашей кастомной _parse_param().


16 марта 2011 г. 14:03 пользователь voron3x на gmail.com
<voron3x на gmail.com> написал:
> Я бридж не юзаю. Ещё я попробовал из приватного метода в контролере вызвать
> render_not_found на что у меня получился выше описанный эффект.
>
> Типа:
>
> sub index {
>     my $self = shift;
>     #Допустим дёргаем параметры и пополняем stash чемнибуть.
>     $self->_parse_param();
>     #Гденить в дальнейшем коде хапнули die() из-за нехватки параметров.
>     die();
>     return $self->render();
> }
>
> sub _parse_param {
>     my $self = shift;
>     # Тут уже понятно что дальнейшая обработка бесполезна.
>     return $self->render_not_found()
>         unless defined $self->req->params->param('foo');
>     ...
>     return;
> }
>
> Вернул 500 вместо ожидаемой 404. Я предположил что после вызова
> render_not_found уже как бы понятно что мы хотим отдать. Но mojolicious
> продолжает выполение
> и пополнение stash разными значениями которые влияют на предидущий
> результат.
>
>
> On 15.03.2011 18:03, Анатолий Шарифулин wrote:
>
> return self->render_not_found;
>
> но лучше через бридж не пускать, чем в прикладном коде разруливать.
>
> 2011/3/15 voron3x на gmail.com <voron3x на gmail.com>
>>
>> Привет!
>>
>> Друзья подскажите пожалуйста в чём может быть дело. При вызове метода
>> $self->render_not_found() продолжает выполняться метод контролера.
>>
>> sub index {
>> my $self = shift;
>> $self->render_not_found('hahahaha');
>> $self->stash(foo => 'bar');
>> $self->client->log->debug("Stash " . Dumper($self->stash()));
>> return $self->render();
>> }
>>
>> Причём прикол ещё вот в чём, например если после
>> $self->render_not_found('hahahaha'); будет например die то mojolicious
>> выкинит старничку 404 но со статусом 500, а не 404. =(
>>
>> sub index {
>> my $self = shift;
>> $self->render_not_found('hahahaha');
>> $self->stash(foo => 'bar');
>> die('hana!');
>> $self->client->log->debug("Stash " . Dumper($self->stash()));
>> return $self->render();
>> }
>>
>> Как мне прервать выполения запроса после вызова render_not_found?
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> С уважением,
>  Анатолий Шарифулин.
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>



-- 
Sincerely yours,
Oleg Kostyuk (CUB-UANIC)


Подробная информация о списке рассылки Moscow-pm