我创建了一个trait和一个控制器一起使用,控制器应该启动trait函数,这个函数验证它的输入,然后执行一个操作。
在FooController.php中:
[..]
$do_stuff = $this->create_stuff($input);
特点:
<?php
namespace App\Traits;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
[..]
use Illuminate\Support\Facades\Validator;
trait Foo
{
public function create_stuff(Request $input)
{
// validation part
$validatedData = $input->validate([
'Value' => 'required|numeric',
]);
// end of validation part
[..]
如果没有验证部分,一切都很正常,但我一添加它,就得到了错误:
Argument 1 passed to App\\Http\\Controllers\\FooController::create_stuff() must be an instance of Illuminate\\Http\\Request, instance of stdClass given,[..]
我知道$input是一个“普通”(?)PHP对象,而且似乎验证只对“请求”对象有效,那么我该如何做呢?
1条答案
按热度按时间wmomyfyw1#
首先,请不要创建用于验证的trait,使用PHP Artisan创建用于验证的请求
并在请求中添加验证,如下所示
然后在请求中添加验证,然后在控制器函数中调用请求
例如