Silex
'da özel bir hata sayfası oluşturmaya çalışırken bir sorunla uğraşıyorum. Bu linkte ne buldum göreÖzel hata sayfalarında Silex & Twig yardımcıları
: Benim uygulamada özel bir 404 hata sayfası oluşturmak için çalışıyorum http://refactoring.us/silex/custom-error-pages-with-silex-and-twig/
. Benim twig şablonunda yardımcıları kullanmaya başlayana kadar her şey iyi çalışıyor.
{% extends "layout.html.twig" %}
{% block main %}
<div id="error404">
<h2>{{ app.translator.trans('page404.title') }}</h2>
<p>{{ app.translator.trans('page404.para1') }}</p>
<p class="btn-footer">
<a href="{{ url('home') }}" class="btn">{{ app.translator.trans('page404.button') }}</a>
</p>
</div>
{% endblock %}
PHP kodu benim Silex app hata işleme için:
$app->error(function (\Exception $e, $code) use($app) {
switch ($code) {
case 404:
$message = $app['twig']->render('error404.html.twig');
break;
default:
$message = $app['twig']->render('error500.html.twig');
}
return new Response($message, $code);
});
i
{{ url('home') }}(bu yardımcı ve rota çalışmalarını kaldırdıktan sonra aşağıdaki gibi
404 hata sayfası şablonu için örnek bir koddur Diğer durumlarda mükemmel bir şekilde!) Uygun şekilde işlenmiş siteyi alıyorum, ancak çeviriler olmadan. yardımcısı ile
, ben şu hatayı alıyorum:Fatal error: Uncaught exception 'Symfony\Component\Routing\Exception\RouteNotFoundException' with message 'Route "" does not exist.' in D:\projects\projectname\application\vendor\symfony\routing\Symfony\Component\Routing\Generator\UrlGenerator.php:119 Stack trace:
#0 D:\projects\projectname\application\vendor\symfony\twig-bridge\Symfony\Bridge\Twig\Extension\RoutingExtension.php(45): Symfony\Component\Routing\Generator\UrlGenerator->generate(NULL, Array, false)
#1 D:\projects\projectname\application\vendor\twig\twig\lib\Twig\Environment.php(327) : eval()'d code(68): Symfony\Bridge\Twig\Extension\RoutingExtension->getPath(NULL, Array)
#2 D:\projects\projectname\application\vendor\twig\twig\lib\Twig\Template.php(265): __TwigTemplate_ca53e56b87abd45da5c34a79d4c2ce34->doDisplay(Array, Array)
#3 D:\projects\projectname\application\vendor\twig\twig\lib\Twig\Template.php(239): Twig_Template->displayWithErrorHandling(Array, Array)
#4 D:\projects\projectname\application\vendor\twig\twig\lib\Twig\Envir in D:\projects\projectname\application\vendor\twig\twig\lib\Twig\Template.php on line 280
Bu yüzden bu sorunu çözmek için bu ve adımları neden olduğunu bunun arkasında olası nedeni ne olabilir burada bazı rehberliğine ihtiyacım var. Tüm yardımlar takdir edildi. Her şey
uygulamanızda UrlGeneratorServiceProvider
kaydetti mi
ve onun çıkmaz benziyor Silex. Ya bir hata ya da Silex hata işleyicisi içinde kayıtlı yardımcıları desteklemiyor gibi görünüyor. – lifo
Sorun bir RouteNotFound Hatası oluşturduğundan ve zaten belirtmişseniz, muhtemelen twig köprüsünden gelen url işleviyle ilgili bir şey var, zaten urlGeneratorServiceProvider gibi standart bir notaion kullanmayı denediniz mi? App.url_generator.generate ('home')? –
Silex hakkında% 100 emin değilsiniz, ancak özel hata şablonları kullanırken Symfony'de, şablonlar (veya işleyicinin içindeki herhangi bir şey) istisnalar veya hatalar atıyorsa, aslında göz ardı edilmektedir. Bu senin için de geçerli olabilir. Hata şablonunu bazı hata ayıklama yolunda oluşturmayı deneyin ve durumun böyle olup olmadığını görün. XDebug ile bu adım adım hata ayıklamayı denemelisiniz. Yine de nasıl çalıştığını daha iyi anlayacaktır. –