【问题标题】:how can I set content of request symfony?如何设置请求 symfony 的内容?
【发布时间】:2014-09-08 06:44:46
【问题描述】:

我手动生成表单的请求内容并希望设置如下数据:

form[1][]=2&form[2][]=3&form[3][]=5&form[4][]=8&form[apply]=

Symfony Request 对象有一个getContent() 方法,但没有setContent()

如何设置内容?

【问题讨论】:

  • 我猜你想保存表单结果。我有同样的问题。你可以这样做: $this->generateUrl('form_url', $request->query->all());

标签: symfony request symfony-forms


【解决方案1】:

找到了一个肮脏但似乎对我有用的解决方案。只需重新初始化请求即可。

    $request->initialize(
        $request->query,
        $request->request,
        $request->attributes,
        $request->cookies,
        $request->files,
        $request->server,
        '<your-content>'
    );

【讨论】:

  • 谢谢,有趣的想法!
【解决方案2】:

Symfony 4 > 版本:

$request->initialize(
    $request->query->all(),
    $request->request->all(),
    $request->attributes->all(),
    $request->cookies->all(),
    $request->files->all(),
    $request->server->all(),
    'your-content>'
);

【讨论】:

    【解决方案3】:

    另一种选择是通过Request::create 方法。

    Request::create(
       '<uri>', 
       '<method>', 
       <parameters>, 
       <cookies>, 
       <files>, 
       <server>, 
       '<your-content>'
    );
    

    来源:HTTP foundation

    【讨论】:

      【解决方案4】:

      另一个使用闭包的肮脏解决方案:https://www.php.net/manual/en/closure.call.php

      $requestClosure = function() use ($decryptedJson) {
          $this->content = $decryptedJson;
          return $this;
      };
      $request = $requestClosure->call($request);
      

      这是如何工作的:

      • 最后,$this 成为请求本身,因此可以调用私有 content
      • 在闭包中调用 return $this 会返回调用所在上下文中的 $request

      【讨论】:

        猜你喜欢
        • 2021-12-27
        • 2015-09-23
        • 2012-04-07
        • 1970-01-01
        • 2018-02-06
        • 2018-05-26
        • 2011-07-24
        • 1970-01-01
        相关资源
        最近更新 更多