您好我正在寻找一个非常简单的问题(我认为),但我没有找到答案或类似案例。 我正在使用symfony 3并尝试为我的管理面板构建第二个菜单。
但是,我有一个问题,我必须在我的" href"中声明相对网址,对于我过去常用的主菜单
{{ url ( 'admin' ) }}
它有效。事实是,现在我的子网站中有子文件夹和多个级别。
我尝试访问的网址是myapp / admin / gameadmin,这个网址在我正在进行时工作,但是当我尝试将其放入' href'我有一条错误消息,指出路线无效。
我宣布它是这样的 - >
{{ url(admin/gameadmin) }}
我试过不同的角色 - >管理员:gameadmin,admin \ gameadmin ...等用路径而不是网址我不知道它是不是宣告它的好方法,或者我的控制器是否有问题。
在我的捆绑中,它的组织方式如下:
->Controllers(folder)
->admin(folder) (You can also find my main controllers on this level)
->admingamecontroller (Where the page I try to reach is routed)
我希望我能给你所有的信息,谢谢你的帮助,对不起我的英语!
答案 0 :(得分:2)
url
参数不是url本身(即:admin / gameadmin),这是路由名称,在routing.yaml
文件或控制器注释中定义。
如果您的行为是这样的:
/**
* @Route("/admin/gameadmin", name="gameadmin")
*/
public function gameAdminAction()
{
...
}
然后,要生成路线,您必须这样做:
{{ url('gameadmin') }}
通过这样做,只要您不更改路线名称,如果您更改gameadmin网址,您网站上的所有链接都将是最新的。
我建议您在Symfony网站上阅读此文档:https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html
编辑:正如user254319所指出的,如果您没有使用注释,则必须编辑routing.yaml
配置文件。
gameadmin:
path: /admin/gameadmin
controller: App\Controller\Admin\AdminGameController::gameadminAction
路由名称是yaml密钥:gameadmin
。
相关的Symfony文档:https://symfony.com/doc/current/routing.html