转换请求到自定义验证请求
是否可以将Illuminate\Http\Request
转换为您使用php artisan make:request MyRequest
进行的自定义验证请求?转换请求到自定义验证请求
我想验证,以发生在方法的道路,使我有:
protected function register(Request $request) {
...
$this->userRepository->signup($request)
...
}
用户信息库:
public function signup(MyRequest $request) {
...
}
这可能吗?我现在正在收到一个错误,因为预计会有一个类。唯一想到的就是制作一个界面,但我不确定它是否可以正常工作。
错误,我得到
Type error: Argument 1 passed to UserRepository::signup() must be an instance of App\Http\Requests\MyRequest, instance of Illuminate\Http\Request given
回答:
我没有发现即使用我的自定义类扩展Request
也没有可能做我想要的,因为自然地,一个方法在获得另一个类时需要一个类的实例。
也许它可能会提取一个接口并包装和绑定它,但这在我看来是一个quickfix。
我的观点是,我从一开始就错了,它更多的是一个架构问题,所以我将我的应用程序转换为不同的方法,并设法避免这样的问题。
回答:
是的,有与无的问题,您应该创建:
<?php namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class MyRequest extends FormRequest
{
public function rules() {
// here you put rules
}
}
,并在你的控制器:
public function signup(\App\Http\Requests\MyRequest $request) {
...
}
注意你还应该在你的请求中调整authorize
方法ST类(返回true或false取决于用户访问)
编辑
更新后 - 你应该输入提示在控制器和存储库自定义类 - 它是由你 - 我经常使用通用Illuminate\Http\Request
,所以你应该做的:
在控制器:
public function controllerMethod(\App\Http\Requests\MyRequest $request)
在仓库:
public function signup(\App\Http\Requests\MyRequest $request)
或
public function signup(\Illuminate\Http\Request $request)
所以总结起来,你应该在控制器使用表格请求类 - 这是验证将进行的地方,以后你可以使用同一个类或通用\Illuminate\Http\Request
- 我个人经常在\Illuminate\Http\Request
中使用版本库或服务,因为他们通常不关心放入MyRequest
类的其他东西 - 他们只是想从请求类中获取数据,就是这样。
以上是 转换请求到自定义验证请求 的全部内容, 来源链接: utcz.com/qa/261958.html