gpt4 book ai didi

symfony - 如何在 Symfony 中的 url query_string 中发送参数?

转载 作者:行者123 更新时间:2023-12-02 12:03:57 27 4
gpt4 key购买 nike

我想从 Twig 页面发送 query_string URL 中的参数并将其获取到 Controller 中。

例如: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,该变量被发送到 Controller 操作。

最佳答案

永远不要对路线进行硬编码!在模板中使用路由助手。首先给你的路线命名,在本例中我将其命名为“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>

在您的 Controller 中,您可以直接获取 id 参数,这样您就不必使用请求服务:

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

您可以执行此操作,因为您已在路由中显式命名此参数,并且它是强制性的,因此在所有情况下都会定义它。它使代码更加清晰且易于阅读。它还允许删除无用的代码。

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

关于symfony - 如何在 Symfony 中的 url query_string 中发送参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43832163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com