Я создал файл
/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 %}
Вот как я расширяю все шаблоны в своем приложении, и он работает без каких-либо проблем. Но это не работает для обработки ошибок. Я всегда получаю это сообщение об ошибке:
Неустранимая ошибка: Не удалось исключить "Symfony\Component\HttpKernel\Exception\NotFoundHttpException" с сообщением "Не удалось найти объект". в C:\xampp\htdocs\myapp\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Controller\Controller.php: 218 Трассировка стека: # 0 C:\xampp\htdocs\myapp\src\myapp\MyappBundle\Controller\AddressController.php(207): Symfony\Bundle\FrameworkBundle\Controller\Controller-> createNotFoundException ('Не удается найти...') # 1 [внутренняя функция]: myapp\MyappBundle\Controller\Address Controller- > 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 (объект (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) в C:\xampp\htdocs\myapp\app\bootstrap.php.cache в строке 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. При запуске на моем рабочем сервере я получаю пустую страницу (вообще нет исходного кода). И, конечно же, я очистил свой кеш.
Когда я пытаюсь просмотреть страницу ошибок в режиме dev, я получаю это сообщение об ошибке:
Фильтр слияния работает только с массивами или хешами; NULL и массив, заданные в TwigBundle: Исключение: error.html.twig в строке 1.
Я вообще не использую twig_array_merge
.
Это вызвано вызовом path()
где я объединяю _route_params
и _locale
в моем footer.html.twig
который я включаю из моего 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>
Он работает со всеми моими шаблонами, за исключением шаблона ошибки. Что здесь не так, как я могу это исправить?
Простейшим решением, хотя и не обязательно наиболее желательным, является изменение строки в обновлении 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 %}