【发布时间】:2017-02-08 14:58:38
【问题描述】:
我是 Symfony 的新手。当前版本:2.8.16 我的问题:我不管理重定向。
app/config/routing.yml:
gb_platform:
resource: "@GBPlatformBundle/Resources/config/routing.yml"
prefix: /platform
src/GB/PlatformBundle/Ressources/config/routing.yml:
gb_platform_home:
path : /{page}
defaults:
_controller : GBPlatformBundle:Advert:index
page: 1
requirements:
page: \d*
gb_platform_view:
path : /advert/{id}
defaults: { _controller : GBPlatformBundle:Advert:view }
requirements:
id: \d+
src/GB/PlatformBundle/Controller/AdvertController.php:
namespace GB\PlatformBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
class AdvertController extends Controller
{
public function indexAction()
{
$url = $this->get('router')->generate(
'gb_platform_view',
array( 'id' => 5)
);
return new Response("L'url de l'annonce d'id 5 est : ". $url);
}
public function viewAction($id)
{
return $this->redirectToRoute('gb_platform_home');
//return new Response("lol");
}
}
错误如下:
无法为命名路由“gb_platform_home”生成 URL,因为这样的路由不存在。
我可以手动访问这两个路由(可以访问“app_dev.php/platform/”)。 但 URL 生成仅适用于 gb_platform_view。
我认为问题的根源可能在 app/config/routing.yml 文件中指定没有迭代......但如果我这样做,它不会解决任何问题并且似乎会产生更多问题。
我找到调试路由命令行:
php 应用程序/控制台调试:路由器
这是结果。
gb_platform_home 正在清除标识为已知路线,所以我不明白。 此外,您可能会注意到在 shell 中有一个 shifted unique print 用于这条路线。为什么 ?解决的关键?
4个空格编码会是问题吗?
感谢您的帮助。
【问题讨论】:
-
我认为您需要在路由使用情况中指定
page值。类似return $this->redirectToRoute('gb_platform_home', array('page'=>0)); -
你能试试那个 dump($this->get('router')->getRouteCollection());并检查 gb_platform_home 路线?
-
Piyush Singh:问题未解决,因为 {page} 已经有默认值。
-
您可以尝试使用
/platform/index/{page}进行调试。有时,当变量未在路由中明确定义时,路由会将其视为模棱两可。 -
我知道这是一个愚蠢的问题:但为什么
gb_platform_home行中的字符与其他字符相比略微偏左?看起来不寻常。它是直接这样来的,还是以任何方式编辑的?
标签: php symfony controller routes frameworks