我最近用一个简单的控制器构建了一个新的 symfony 项目,用于读取 .csv 文件并将其内容输出到模板。我使用控制台生成了包和控制器,并为控制器提供了路由“/browse”。尝试运行时,(127.0.0.1:8000/browse) 它告诉我:“找不到用于“GET/browse”的路由”。
src/OpiumBundle/Controller/BrowseController.php
<?php
namespace OpiumBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BrowseController extends Controller {
/**
* @Route("/browse")
*/
public function indexAction() {
$varPath = $this->get('kernel')->getRootDir().'/../var';
return $this->render('OpiumBundle:Browse:index.html.php', array(
// ...
));
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/配置/routing.yml
opium:
resource: "@OpiumBundle/Resources/config/routing.yml"
prefix: /
app:
resource: '@AppBundle/Controller/'
type: annotation
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法发布 debug:console 的输出,因为我的代表太低了。但有两个空位我猜他们不应该:
调试:路由器
opium_homepage ANY ANY ANY /
homepage ANY ANY ANY /
Run Code Online (Sandbox Code Playgroud)
在yml
生成包时使用该选项时,将导致使用Bundle:Default:index
of来创建包 routing.yml 文件bundle_homepage
,并将配置文件作为资源包含在您的应用程序 routing.yml 文件中。
检查您的src/OpiumBundle/Resources/config/routing.yml
文件并确保其读取为。
opium_bundle:
resource: '@OpiumBundle/Controller/'
type: annotation
Run Code Online (Sandbox Code Playgroud)
或者编辑您的app/config/routing.yml
文件以阅读
opium:
resource: "@OpiumBundle/Controller/"
prefix: /
type: annotation
app:
resource: '@AppBundle/Controller/'
type: annotation
Run Code Online (Sandbox Code Playgroud)
否则,您将无法使用基于注释的路由,并且需要手动将路由添加到您的routing.yml
配置文件中。
进行更改后清除缓存
php bin/console cache:clear
Run Code Online (Sandbox Code Playgroud)
检查您的路线以确保browse
包括在内
php bin/console debug:router
Run Code Online (Sandbox Code Playgroud)
哪个应该输出
opium_browse_index ANY ANY ANY /browse
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8448 次 |
最近记录: |