2015-01-11 69 views
0

我創建的文件自定義錯誤模板拋出致命錯誤

/myapp/app/Resources/TwigBundle/views/Exception/error.html.twig 

與此內容

{% extends 'MyappBundle::base.html.twig' %} 

{% block body %} 
<div> 
    <h1>Error</h1> 
    <p>The server returned a "{{ status_code }} {{ status_text }}".</p> 
</div> 
{% endblock %} 

這是我如何在我的應用程序擴展所有的模板,它的工作沒有任何問題。但它不適用於錯誤處理。我總是收到此錯誤信息:

Fatal error: Uncaught exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' with message 'Unable to find entity.' in C:\xampp\htdocs\myapp\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Controller\Controller.php:218 Stack trace: #0 C:\xampp\htdocs\myapp\src\myapp\MyappBundle\Controller\AddressController.php(207): Symfony\Bundle\FrameworkBundle\Controller\Controller->createNotFoundException('Unable to find ...') #1 [internal function]: myapp\MyappBundle\Controller\AddressController->showAction('=k21RBNjM') #2 C:\xampp\htdocs\myapp\app\bootstrap.php.cache(3020): call_user_func_array(Array, Array) #3 C:\xampp\htdocs\myapp\app\bootstrap.php.cache(2982): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #4 C:\xampp\htdocs\myapp\app\bootstrap.php.cache(3131): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #5 C:\xampp\htdocs\myapp\app\bootstrap.php.cache(2376) in C:\xampp\htdocs\myapp\app\bootstrap.php.cache on line 2998

這是我扔的404錯誤:

$em = $this->getDoctrine()->getManager(); 
$entity = $em->getRepository('MyBundle:Entity')->find($id); 
if (!$entity) { 
    throw $this->createNotFoundException('Unable to find entity.'); 
} 

我使用的Win7與PHP v5.5.6和Symfony的V2.6.3。在我的生產服務器上運行時,我得到一個空白頁面(根本沒有源代碼)。而且 - 很確實 - 我已經清除了我的緩存。

更新

當我嘗試preview my error page in dev mode,我得到這個錯誤信息:

The merge filter only works with arrays or hashes; NULL and array given in TwigBundle:Exception:error.html.twig at line 1.

我不使用twig_array_merge可言。

更新2

這是由path()電話,我合併_route_params在我footer.html.twig_locale,我從我的MyappBundle::base.html.twig文件包括引起:

<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': lang})) }}"><span class="flag-icon flag-icon-{{ lang }}"></span> {{ lang }}</a> 

它適用於我的所有模板,除了在錯誤模板上。這裏有什麼問題,我該如何解決這個問題?

+0

Mayby在base.html.twig twig_array_merge擲錯誤? ... – Gregsparrow

+0

不,我根本不使用twig_array_merge。 –

+0

@Gregsparrow走在正確的軌道上。我可以用'MyappBundle :: base.html.twig''重現錯誤。嘗試將基本模板移入您的包中,例如''MyappBundle:默認:base.html.twig'' – geoB

回答

1

的最簡單的解決方案,雖然不一定是最可取的,是修改線中更新2如下:

{% if app.request.get('_route_params') is not null %} 
<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': lang})) }}"><span class="flag-icon flag-icon-{{ lang }}"></span> {{ lang }}</a> 
{% endif %} 
+0

這有幫助,是的。雖然這只是一個解決方法(這可能是一個錯誤)。 –