Php 检查symfony2中的路由
我想学习symfony并开始创建一个小应用程序。我有一个关于路线的问题。因此,我的项目中有以下路线:Php 检查symfony2中的路由,php,symfony,symfony-routing,Php,Symfony,Symfony Routing,我想学习symfony并开始创建一个小应用程序。我有一个关于路线的问题。因此,我的项目中有以下路线: /admin/homepage,/admin/news,admin/galery 否如果我在url/admin中写入,则此路由不存在,并且我将获取为错误未找到“get/admin/”的路由。是否存在一种检查路由是否不存在并重定向到另一个路由的方法,例如?提前谢谢,我的英语很抱歉 我的路线: news_all: path: /news/all/{page} defaults: { _control
/admin/homepage
,/admin/news
,admin/galery
否如果我在url/admin
中写入,则此路由不存在,并且我将获取为错误未找到“get/admin/”
的路由。是否存在一种检查路由是否不存在并重定向到另一个路由的方法,例如?提前谢谢,我的英语很抱歉
我的路线:
news_all:
path: /news/all/{page}
defaults: { _controller: AppAdminBundle:News:all, page: 1 }
requirements:
page: \d+
_method: GET|POST
news_add:
path: /news/add
defaults: { _controller: AppAdminBundle:News:add }
在您的情况下,最好的解决方案是覆盖默认的
ExceptionController
,并在其中添加自定义逻辑,例如重定向到其他页面-根据文档:
注:
当然,除了从头开始创建一个新的异常控制器之外,您还可以扩展默认的
ExceptionController
。在这种情况下,您可能希望重写showAction()
和findTemplate()
方法中的一个或两个。后者定位要使用的模板。在您的情况下,最好的解决方案是覆盖默认的ExceptionController
并在那里添加自定义逻辑,例如重定向到其他页面-根据文档:
注:
当然,除了从头开始创建一个新的异常控制器之外,您还可以扩展默认的
ExceptionController
。在这种情况下,您可能希望重写showAction()
和findTemplate()
方法中的一个或两个。后者定位要使用的模板。Symfony的好做法是使用注释在控制器中设置rout
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
及
此外,通过注释,您可以为整个控制器设置路由。
对你来说,这就是你想要的
/**
* @Route("/admin")
*/
class NewsController extends Controller
{
/**
* @Route("/news/add", name="news_add")
*/
public function addAction()
{
// ...
}
}
还有,我建议你看看
另外,为了回答您的问题,我认为您可以定制一个细枝函数(查看更多信息)。用于检查给定名称是否为有效路由的函数:
function routeExists($name)
{
// I assume that you have a link to the container in your twig extension class
$router = $this->container->get('router');
return (null === $router->getRouteCollection()->get($name)) ? false : true;
}
Symfony的良好实践是使用注释在控制器中设置rout
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
及
此外,通过注释,您可以为整个控制器设置路由。
对你来说,这就是你想要的
/**
* @Route("/admin")
*/
class NewsController extends Controller
{
/**
* @Route("/news/add", name="news_add")
*/
public function addAction()
{
// ...
}
}
还有,我建议你看看
另外,为了回答您的问题,我认为您可以定制一个细枝函数(查看更多信息)。用于检查给定名称是否为有效路由的函数:
function routeExists($name)
{
// I assume that you have a link to the container in your twig extension class
$router = $this->container->get('router');
return (null === $router->getRouteCollection()->get($name)) ? false : true;
}
您可以添加
索引操作
并在其中添加重定向到所需功能。您是如何在控制器中定义路由的?我编辑了问题您可以添加索引操作
并在其中添加重定向到所需功能。您是如何在控制器中定义路由的?我编辑了问题抱歉,但我不理解重定向是如何进行的当您访问不存在的路由时,HttpNotFoundException
被激发,然后异常被Symfony2
异常侦听器捕获,并调用exceptionController
。你所要做的就是实现你的自定义例外控制器
,并使用简单的$this->RedirectToToRoute('your_route')
将用户重定向到正确的路由。对不起,我不明白当你访问一条不存在的路由时,如果我访问一条不存在的路由,将如何进行重定向,HttpNotFoundException
被激发,然后异常被Symfony2
异常侦听器捕获,并将调用exceptionController
。您所要做的就是实现您的自定义例外控制器
,并使用简单的$this->redirectToRoute(“您的路径”)
将用户重定向到正确的路径。您能提供帮助吗?你能帮忙吗?