问题描述
刚接触 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 的评论。我让他们让它成为一个答案,以便我可以选择它,但已经 4 个月了,所以我自己创建了它,以便其他人可以快速看到问题已得到解答:
评论中提到的用户@lagbox:
您是否使用表单请求进行验证?如果是这样,它们会在您的控制器方法被调用之前被解析和验证
评论是正确的。 Tmethod 使用了一个自定义请求类,它从 api/application/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php 扩展而来。我在该类中添加了 eval()
,它最终到达了断点。