【发布时间】:2017-08-24 10:00:50
【问题描述】:
正如标题明确指出的那样,我无法获得最近添加的某些特定路线。 我的 symfony 版本:2.8.18。 所以这里是细节:
我尝试匹配的路线: - /平台/猫 - /platform/cat/{id}
文件 - app/config/routing.yml:
gb_platform:
resource: "@GBPlatformBundle/Resources/config/routing.yml"
prefix: /platform
文件 - GB\PlatformBundle\Resources\config\routing.yml:
gb_platform_home_:
path : /
defaults: { _controller: GBPlatformBundle:Advert:index }
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+
gb_platform_add:
path : /add
defaults: { _controller : GBPlatformBundle:Advert:add }
gb_platform_edit:
path : /edit/{id}
defaults: { _controller : GBPlatformBundle:Advert:edit }
requirements:
id: \d+
gb_platform_delete:
path : /delete/{id}
defaults: { _controller : GBPlatformBundle:Advert:delete }
requirements:
id: \d+
gb_platform_cat:
path : /cat
defaults: { _controller : GBPlatformBundle:Category:index }
gb_platform_cat_view:
path : /cat/{id}
defaults: { _controller : GBPlatformBundle:Category:view }
requirements:
id: \d+
文件 - GB\PlatformBundle\Resources\controller\CategoryController.php:
<?php
namespace GB\PlatformBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpFoundation\Response;
use GB\PlatformBundle\Entity\Advert;
use GB\PlatformBundle\Entity\Category;
class CategoryController extends Controller
{
public function indexAction(Request $request)
{
}
public function viewAction($id)
{
$em = $this->getDoctrine()->getManager();
$catRepo = $em
->getRepository('GBPlatformBundle:Category');
$cat = $catRepo
->find($id);
if($cat === null)
{
throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");
}
return $this->render('GBPlatformBundle:Category:view.html.twig', array(
'category' => $cat,
));
}
}
在源头,bundle 的 routing.yml 是无效的。修复后,我尝试获取这两个命令:
php 应用程序/控制台调试:路由器
php 应用程序/控制台调试:路由器 gb_platform_cat
php 应用程序/控制台调试:路由器 gb_platform_add
每个命令都成功了,我看到 /cat 和 /add 之间没有区别,而一个匹配而另一个不匹配。 我也尝试过多次清除缓存:
php 应用程序/控制台缓存:清除 --env prod
还是不行。我糊涂了 ... 错误是基本的:找不到“GET /platform/cat/7
的路由”【问题讨论】:
-
您说您的路由文件是
GB\PlatformBundle\Ressources\config\routing.yml,请注意您使用的是“资源”而不是您的routing.yml 中的资源:@987654328@。是这个问题吗? -
确实是我的错。这是特定于主题的输入错误。
-
尝试更正 routing.yml 开头的 4 个空格:
gb_platform_home_:可能是另一个输入错误,但它可能会出错。 Yaml 对空格非常严格。 -
我很小心,又检查了一遍。没有错误。我什至将其提交给:yamllint.com。我认为,问题可能是 rounting.yml 没有按应有的方式实现。我试图更改匹配路由的控制器,它使用旧控制器...
-
gb_platform_home路线中的另一个错字打开和关闭{}:_controller : GBPlatformBundle:Advert:index
标签: php symfony debugging config router