[英]Symfony2 - Creating a URL
我刚刚开始使用Symfony。 当我调用诸如book / 5之类的URL时,我想回显$ bookid,但是我卡在某个地方。
这是我的DefaultController.php文件
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller {
/**
* @Route("/book/{id}", name="book")
*/
public function indexAction() {
return $this->render('default/index2.html.php');
}
}
文件:/Myproject/app/Resources/views/default/index2.html.php
<?php
echo $id;
?>
当我把这本书叫做6时,我得到了一个空白页。 缺少了什么? 我也需要在其他地方更改吗?
您应该在操作中声明该变量并将其传递给视图。
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
/**
* @Route("/book/{id}", name="book")
*/
public function indexAction($id)
{
return $this->render('default/index2.html.php', array(
'id' => $id
));
}
}
只要在URL中定义了参数,就还需要在操作函数中“声明”该参数,因此symfony会对其进行映射。 然后,如果要在视图中使用它,则必须将其传递。
如果您刚开始使用Symfony,我强烈建议您阅读Symfony Book和Cookbook。 它们充满了示例,相对来说也比较容易理解,即使对于新手也是如此。
除此之外,smottt的答案是正确的。 您在路由定义中添加{id},并在控制器操作中将其作为参数接收。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.