0

Lavarel 的新手。

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

我将这两个版本都添加到MySuperController的方法注册中的断点中:

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 逐步调试?

4

1 回答 1

1

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

用户@lagbox 在评论中提到:

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

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

于 2021-06-30T11:03:00.057 回答