转换请求到自定义验证请求

是否可以将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

回到顶部