繁体   English   中英

Symfony2-创建一个URL

[英]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},并在控制器操作中将其作为参数接收。

Symfony书:路由

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM