【问题标题】:Laravel - Tinker breakpoint in controllerLaravel - 控制器中的修补程序断点
【发布时间】:2023-04-04 18:32:01
【问题描述】:

Lavarel 新手。

我正在尝试在 Laravel 中调试控制器的方法,为此我使用的是 Tinker(基于 Psysh)。

我将这两个版本都添加到我的 MySuperController 的方法 signup 内的断点:

extract(\Psy\Shell::debug(get_defined_vars()));
eval(\Psy\sh());

我已经运行 php artisan tinker 并在控制台中完成了以下操作:

$controller = app()->make('\App\Http\Controllers\Api\V1\MySuperController');
app()->call([$controller, 'signup'], ["param"=>"value"]);

执行该操作时,Tinker 会响应:Illuminate\Validation\ValidationException 并带有消息“给定数据无效。”

但我从来没有看到代码在断点处停止。我是否错误地认为我可以使用 Tinker 逐步调试?

【问题讨论】:

  • 您是否使用表单请求进行验证?如果是这样,它们会在您的控制器方法被调用之前得到解决和验证
  • 嘿@lagbox ,似乎没有。有一条路线,它直接指向控制器和方法。不过我会继续寻找。我还没有看到任何 $request->validated() 被调用。
  • 嘿@lagbox,你是绝对正确的,你能把它作为答案发布吗?该方法使用自定义请求类,该类从抽象类扩展而来,抽象类从 api/application/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php 扩展。我在该类中添加了 eval() ,它终于到达了断点。太棒了!

标签: laravel php-7 laravel-8 tinker psysh


【解决方案1】:

此答案基于用户 @lagbox 的评论。我要求他们将其作为答案,以便我可以选择它,但已经 4 个月了,所以我自己创建它,以便其他人可以快速看到问题已得到解答:

评论中提到的用户@lagbox:

您是否使用表单请求进行验证?如果是这样,它们会在您的控制器方法被调用之前得到解决和验证

评论很到位。 Tmethod 使用 自定义请求类,它从 api/application/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php 扩展而来。我在该类中添加了eval(),它终于到达了断点

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2017-01-05
    • 1970-01-01
    • 2013-09-24
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多