【问题标题】:How to send params in url query_string in Symfony?如何在 Symfony 的 url query_string 中发送参数?
【发布时间】:2017-05-07 13:37:29
【问题描述】:

我想从 Twig 页面发送 query_string URL 中的参数并在控制器中获取它。

例如:index.html.twig

<a href="/newcont/add/{{ id }}">New</a>

controller:

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class Newcont extends Controller
{
    /**
     * @Route("/newcont/add/{id}", requirements={"id": "\d+"})
     */
    public function addAction(Request $request){

        $params = $request->request->all();
        //$id = $request->query->get();
        var_dump($params);
        die;
    }
}

我想在 twig 中有一个带有变量的 url,它被发送到控制器操作。

【问题讨论】:

    标签: symfony url parameters query-string


    【解决方案1】:

    永远不要对路线进行硬编码!在模板中使用路由助手。首先给你的路线起个名字,在这种情况下我将它命名为“myroute”,当然你应该使用更有意义的东西:

    class Newcont extends Controller
    {
        /**
         * @Route("/newcont/add/{id}", name="myroute", requirements={"id": "\d+"})
         */
    

    然后在你的 Twig 文件中,使用 path 帮助器,它会为你生成正确的路径:

    <a href="{{ path('myroute', {'id': 7}) }}">New</a>
    

    你当然可以用变量替换 7。

    <a href="{{ path('myroute', {'id': myTwigVar}) }}">New</a>
    

    在您的控制器中,您可以直接获取id 参数,因此您不必使用请求服务:

    public function addAction(Request $request, $id) { 
    

    你可以这样做,因为你已经在你的路由中明确命名了这个参数并且它是强制性的,所以在所有情况下它都会被定义。它使代码更加简洁易读。它还允许删除无用的代码。

    请注意,在这种情况下,您不想修改查询字符串,而是修改路径。查询字符串是 ?foo=bar 之类的路径之后的内容。

    【讨论】:

    • 我怎样才能在我的控制器中获取 Id?
    • 读取.. $id 在Request $request之后
    猜你喜欢
    • 2017-01-14
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2015-12-03
    相关资源
    最近更新 更多