Symfony 6 中的路由注释不起作用

问题描述 投票:0回答:4

我在 Homestead 上运行一个 symfony 应用程序,但是当通过注释添加路由以进行简单操作时它不起作用。

namespace App\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class BlogController extends AbstractController
{
/**
 * @Route("/index",name="blog_index")
 */
public function index(){
    dd('Test KO');
  }
}

用于路由调试器

vagrant@homestead:~/code/symfony61$ php bin/console debug:router
 -------------------------- -------- -------- ------ ----------------------------------- 
  Name                       Method   Scheme   Host   Path                               
 -------------------------- -------- -------- ------ ----------------------------------- 
  _preview_error             ANY      ANY      ANY    /_error/{code}.{_format}           
  _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_phpinfo          ANY      ANY      ANY    /_profiler/phpinfo                 
  _profiler_xdebug           ANY      ANY      ANY    /_profiler/xdebug                  
  _profiler_search_results   ANY      ANY      ANY    /_profiler/{token}/search/results  
  _profiler_open_file        ANY      ANY      ANY    /_profiler/open                    
  _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   
 -------------------------- -------- -------- ------ ----------------------------------- 
routes annotations php-8 symfony6
4个回答
1
投票

Symfony 6 没有预配置的路由注释配置。所以你需要遵循这个简单的步骤:

1- 在 config/routes 文件夹下创建一个 attributes.yaml 文件。

2- 添加以下代码

controllers:
resource: ../../src/FOLDER_NAME_OF_WHERE_YOUR_ROUTER_CLASSES_EXISTS/
type: annotation

3- 使用新语法添加路由注释,例如

#[Route('/inbound', name: 'inbound', methods: 'POST')]
public function inbound(Request $request): Response
{
    return new Response('OK', 200);
}

4-如果一切正常,调试你的路线

bin/console debug:router

0
投票

通常有一个文件:config/routes.yaml,内容为:

controllers:
    resource: ../src/Controller/
    type: annotation
    # (the type: annotation option also applies to attributes...)

参见:https://symfony.com/doc/current/routing.html#creating-routes-as-attributes-or-annotations


0
投票

PHP8 + Symfony 6 使用 PHP 注释:#[Route('/', name: 'app_index')]


0
投票

在 symfony 6 和 PHP 8 中,您可以使用 PHP 属性代替 symfony 注释。像这样使用。

#[Route('/index', name: 'blog_index')]
public function blog_index(){
    //code..
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.