Php Symfony2批注无法为命名路由生成URL
就我搜索过的类似问题而言,我没有找到一个能解决我问题的 这是app/config/routing.yml中的条目:Php Symfony2批注无法为命名路由生成URL,php,symfony,routing,annotations,Php,Symfony,Routing,Annotations,就我搜索过的类似问题而言,我没有找到一个能解决我问题的 这是app/config/routing.yml中的条目: basym_address: resource: "@BasymAddressBundle/Controller/" type: annotation prefix: / 这是相应的控制器: namespace Basym\AddressBundle\Controller; use Symfony\Bundle\FrameworkBundle
basym_address:
resource: "@BasymAddressBundle/Controller/"
type: annotation
prefix: /
这是相应的控制器:
namespace Basym\AddressBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* Class DefaultController
*
* @package Basym\AddressBundle\Controller
*
* @Route("/address")
*/
class DefaultController extends Controller
{
/**
* @Route("/{name}", defaults={"name" = "Christian Lauer"})
* @Method({"GET", "POST"})
* @Template()
*/
public function indexAction($name = "Christian Lauer")
{
return array('name');
}
}
下面是引发异常的代码(来自MenuBuilder):
这是应用程序/控制台路由器的输出:匹配/地址:
> php.exe app\console router:match /address
Route "basym_address_default_index" matches
[router] Route "basym_address_default_index"
Name basym_address_default_index
Path /address/{name}
Host ANY
Scheme ANY
Method GET|POST
Class Symfony\Component\Routing\Route
Defaults _controller: BasymAddressBundle:Default:index
name: Christian Lauer
Requirements
Options compiler_class: Symfony\Component\Routing\RouteCompiler
Path-Regex #^/address(?:/(?P<name>[^/]++))?$#s
namespace Basym\AddressBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* Class DefaultController
*
* @package Basym\AddressBundle\Controller
*
* @Route("/address")
*/
class DefaultController extends Controller
{
/**
* @Route("/{name}", defaults={"name" = "Christian Lauer"})
* @Method({"GET", "POST"})
* @Template()
*/
public function indexAction($name = "Christian Lauer")
{
return array('name');
}
/**
* @Route("/")
* @Method({"GET", "POST"})
*/
public function anotherAction()
{
return new Response();
}
}
我在第19行的kernel.root_dir/Resources/views/layout.html.twig中得到“在呈现模板期间引发了异常(“无法为命名路由“地址”生成URL,因为该路由不存在。”)”。为什么?
感谢您的帮助。只能使用指向函数的路由。你只有一条工作路线。它是/address/{name} /仅寻址对控制器类DefaultController的引用 以下代码将支持路由/地址:
> php.exe app\console router:match /address
Route "basym_address_default_index" matches
[router] Route "basym_address_default_index"
Name basym_address_default_index
Path /address/{name}
Host ANY
Scheme ANY
Method GET|POST
Class Symfony\Component\Routing\Route
Defaults _controller: BasymAddressBundle:Default:index
name: Christian Lauer
Requirements
Options compiler_class: Symfony\Component\Routing\RouteCompiler
Path-Regex #^/address(?:/(?P<name>[^/]++))?$#s
namespace Basym\AddressBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* Class DefaultController
*
* @package Basym\AddressBundle\Controller
*
* @Route("/address")
*/
class DefaultController extends Controller
{
/**
* @Route("/{name}", defaults={"name" = "Christian Lauer"})
* @Method({"GET", "POST"})
* @Template()
*/
public function indexAction($name = "Christian Lauer")
{
return array('name');
}
/**
* @Route("/")
* @Method({"GET", "POST"})
*/
public function anotherAction()
{
return new Response();
}
}
我认为您应该使用
basym\u address\u default\u index
作为路线名称,而不是address