【问题标题】:How to fill Request object in command line REPL tool Tinker with emulated data of real http request如何在命令行 REPL 工具 Tinker 中使用真实 http 请求的模拟数据填充请求对象
【发布时间】:2019-08-09 03:21:49
【问题描述】:

在我的项目中使用 Laravel 框架和名为 Tinker 的 REPL,我想将请求对象设置为与通过浏览器发出一些真实 HTTP 请求时相同的状态。

当我使用转储请求时

 dd($request);

我在$request 中收到很多数据,例如标题、表单输入数据等。

我想在 Tinker REPL 的 $request 中接收相同的数据。

如何在 Tinker 中从命令行模拟 HTTP 请求?

【问题讨论】:

    标签: php laravel read-eval-print-loop tinker


    【解决方案1】:

    您应该能够实例化一个请求对象,然后使用替换来获取一些输入数据。像这样的东西应该在修补程序中工作......

    >> $r = new Illuminate\Foundation\Http\FormRequest()

    >> $r->replace(['yada' => 'bla bla bla'])

    >> $r->yada

    那应该输出 bla bla bla。

    【讨论】:

    • 谢谢,我知道我可以在 PHP 中编辑任何对象,但问题是我不想用任何数据填充这个对象,而是用真实数据或看起来像真实的数据,并且使用从实际页面请求引导框架时使用的框架的某些功能自动完成 如果您从调试器或 dd() 中查看它的内容,Request 对象中确实有很多数据
    • @IlyaKolesnikov 我不明白你希望 HTTP 请求如何进入 Laravel 命令行应用程序。
    • @keyboardSmasher,我不知道,只是想知道它是怎么回事。正如我想的那样,可能是这些情况:1)-设置_SERVER等变量并启动请求2)-使用请求的某些创建方法并向其发送一些初始值,例如url等
    • @keyboardSmasher,当我尝试执行 $r = new Illuminate\Foundation\Http\FormRequest() 时,它给出了一个错误:“从施法者抛出的 Unexpected ErrorException:未定义的索引:”
    • @keyboardSmasher,我找到了 FormRequest 的静态方法 - create($url, bla-bla) 认为它应该根据输入参数创建和填充请求。但是下面描述的错误不允许这样做
    【解决方案2】:

    Request 类有一些方法来启动它,名称从 create... 开始,并且 create 方法允许使用手动给定的参数(如 url、方法和其他可选参数)来启动它:

    Illuminate\Foundation\Http\FormRequest::create('http://your-url', 'METHOD', ...)

    所以你可以从 REPL 使用它来玩你的控制器并像你来自某些路线一样启动它们

    【讨论】:

    • 如果您为将来可能因您的回答而获得帮助的访问者添加一些细节,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2012-12-11
    相关资源
    最近更新 更多