所以我正在做一个项目,我想做一个定制的错误页面,比如404 500 .
因此,我阅读了symfony文档,我所要做的就是composer twig-pack,然后在这个树目录\templates\bundles\TwigBundle\Exception中添加error404.html.twig。要完成任务,我必须更改prod中的.env,以查看我的美容错误页面。
但是,当我试图输入一个错误的url,期望得到我的404时,我得到了一个500 (来自symfony的基本错误页面)。
我检查了我的日志,发现我得到了一个关键错误:
[2021-07-14T08:35:15.194689+00:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET https://micro59/dejifosd"" at C:\wamp\www\Projects\micropro\vendor\symfony\http-kernel\EventListener\RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET https://micro59/dejifosd\" at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\http-kernel\\EventListener\\RouterListener.php:136)\n[previous exception] [object] (Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/dejifosd/\". at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\routing\\Matcher\\Dumper\\CompiledUrlMatcherTrait.php:70)"} []
[2021-07-14T08:35:15.229712+00:00] php.CRITICAL: Uncaught Error: Symfony\Bridge\Twig\Extension\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\wamp\www\Projects\micropro\var\cache\prod\twig\d5\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37 {"exception":"[object] (TypeError(code: 0): Symfony\\Bridge\\Twig\\Extension\\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\\wamp\\www\\Projects\\micropro\\var\\cache\\prod\\twig\\d5\\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37 at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\twig-bridge\\Extension\\RoutingExtension.php:46)"} []
[2021-07-14T08:35:15.232242+00:00] request.CRITICAL: Uncaught PHP Exception TypeError: "Symfony\Bridge\Twig\Extension\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\wamp\www\Projects\micropro\var\cache\prod\twig\d5\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37" at C:\wamp\www\Projects\micropro\vendor\symfony\twig-bridge\Extension\RoutingExtension.php line 46 {"exception":"[object] (TypeError(code: 0): Symfony\\Bridge\\Twig\\Extension\\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\\wamp\\www\\Projects\\micropro\\var\\cache\\prod\\twig\\d5\\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37 at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\twig-bridge\\Extension\\RoutingExtension.php:46)"} []我被困在这里了。我尝试了很多东西(作曲家更新,清除缓存.)但什么都没变。如果有人愿意帮助我,那将是非常感激的。
发布于 2021-07-14 21:06:45
错误消息RoutingExtension::getPath()中的类和方法定义了一个Twig函数- 路径()。您的error404.html.twig文件使用该函数,但不具有所需的第一个参数('name',路由名称)-或传递给它的值为null。
如何自定义错误页有一个简单的错误页面模板,并且有一个示例路径/路由名{{ path('homepage') }}。
您可以获得到bin/console debug:router到目前为止可用路由的列表--它必须是框架所知道的,否则它会抛出一个关于未知路由的错误。
它还有一个.yaml,您可以使用它使错误页在开发中可用(您的控制器很好,这会更干净、更容易--而且只在开发中可用,因为只有当APP_ENV变量‘dev’时才会读取APP_ENV/目录中的路径)。
如果您还没有,那么composer require debug-pack和任何错误--包括您的‘/ error 404’页面上的错误--都会显示一个“大友好错误页”,还应该添加许多有用的信息--通常包括在小枝模板中显示文件和行。
在这个特殊的例子中,由于错误的类型,它不能在Twig库内部(并且来自PHP类型系统)中很深的位置,不是由Symfony或twig直接发现的错误--但是它将在堆栈跟踪中有一个链接来显示已编译的小枝模板(在./var/cache/dev/ twig /.中的一个随机命名的文件中),它还显示了在小枝模板中调用->getPath();的位置--这样您就可以在实际的.twig文件中跟踪它(它在模板中添加注释以帮助)。
https://stackoverflow.com/questions/68374970
复制相似问题