我开始教程(作为新手),并且每件事都可以正常工作,直到:
http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller at step创建页面:路由和控制器
我创建了一个名为/var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php
的文件
但是当我打开http://[Server-IP]:8000/app_dev.php/lucky/number总是得到404:
No route found for "GET /lucky/number"
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »
[2/2] NotFoundHttpException: No route found for "GET /lucky/number" +
[1/2] ResourceNotFoundException: +
使用routing.yml
app:
resource: "@AppBundle/Controller/"
type: annotation
调节器
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
class LuckyController
{
/**
* @Route("/lucky/number")
*/
public function numberAction()
{
$number = rand(0, 100);
return new Response( '<html><body>Lucky number: '.$number.'</body></html>' );
}
}
不知道错误在哪里......
错误 - 未捕获的PHP异常Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException:“在/ var / www / html / [Symfony-Folder] / app / cache / dev / classes中找不到”GET / lucky / number“的路由。 php line 2061
php app/console debug:route
[router] Current routes
Name Method Scheme Host Path
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_purge ANY ANY ANY /_profiler/purge
_profiler_info ANY ANY ANY /_profiler/info/{about}
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
_configurator_home ANY ANY ANY /_configurator/
_configurator_step ANY ANY ANY /_configurator/step/{index}
_configurator_final ANY ANY ANY /_configurator/final
_twig_error_test ANY ANY ANY /_error/{code}.{_format}
homepage ANY ANY ANY /
我刚添加了一个
<?php
到文件“LuckyNumberController”,它的工作....真的很奇怪。
谢谢大家
扩展基类Controller对我来说不起作用。要解决这个问题,我必须在web / app.php中进行以下更改
$kernel = new AppKernel('prod', true);
此外,我不得不在网址中添加'en':http://scotchbox.demo/en/lucky/number
试试这个网址:
http://[Server-IP]:8000/app_dev.php/en/lucky/number
Symfony Book中有一个错误:他们忘记了演示应用程序支持i18n。
只需在路由选项之前添加“/ en”参数即可。
我知道这个问题已经结束但我希望我的回答可以帮助那些仍然面临这个问题的人。
有时是缓存问题。尝试从/ project / var / cache / dev中删除dev文件夹。
正如authentictech所说,你也可以试试这个命令:
php bin/console cache:clear
如果要指定环境,则应添加--env = prod属性。
实际上你没有扩展Symfony Controller类。它应该是类LuckyController扩展Controller
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
class LuckyController extends Controller {
/**
* @Route("/lucky/number")
*/
public function numberAction() {
$number = rand(0, 100);
return new Response('<html><body>Lucky number: '.$number.'</body></html>');
}
}
编辑:毕竟,这个问题的问题不在于扩展控制器,所以忽略我的答案。
我将控制器复制并粘贴到现有的Symfony项目中,并立即显示该路径。所以控制器没什么问题。
我也比较了routing.yml和它是一样的。
唯一剩下的就是检查文件夹结构并确保没有将不同的Symfony项目混合在一起;也许你正在编辑正确的文件,但从不同的路径启动Web服务器。
仔细检查或以完全不同的方式重建项目。由于您正在使用嵌入式Web服务器进行测试,因此您无需将项目放入/ var / www / html(事实上最好不要这样做)。
http://localhost:8080/SymfonyProject /网络/ app_dev.php /吉利/数
这个对我有用。将“SymfonyProject”更改为项目名称文件夹,或者如果项目由服务器直接指向,则将其删除。还要注意适合你的端口(localhost:8080)。在我的情况下是8080,在你的可能是8000或其他东西。
你可能得到“没有找到GET /运气/号码的路线”的另一个原因是因为你在@Route
注释前面有一个标签。我以为我编写的代码与示例完全一样,并且收到了这个错误,但是转过来了它是标签。
请参阅下面的代码,并注意第一个代码生成“No Route found ...”异常:
/**
* @Route("/lucky/number")
*/
/**
* @Route("/lucky/number")
*/
万一其他人遇到这个问题:对我来说问题是双重的:
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
添加一个use语句有同样的问题,但原因完全不同于此处所示的原因......
不知怎的,我的演示没有定义默认的语言环境。似乎有许多配置可以解决这个问题,但我还不熟悉Symfony还没知道确切的原因。直到那时我的解决方案是简单地在URL中定义区域设置,例如:
/app_Dev.PHP/恩/lucky/number