【发布时间】: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