Php 验证设置

Php 验证设置,php,laravel,validation,Php,Laravel,Validation,现在我正在创建一个验证,当用户没有输入哪个用户将处理任务时。用户id输入在选项列表中显示。在TaskController中: public function create(Request $request) { $task = new Task(); $task->description = $request->get('description'); $task->user_id = $request->get(

现在我正在创建一个验证,当用户没有输入哪个用户将处理任务时。用户id输入在选项列表中显示。在TaskController中:

public function create(Request $request)
    {

        $task = new Task();
        $task->description = $request->get('description'); 
        $task->user_id = $request->get('user_id');
        $val = Task::Inputvalidator($request->validated()); 
        $file = $request->file('file');
        if($request->hasFile('file')){
            foreach($file as $file){
                $file->move('storage/uploads', $file->getClientOriginalName());
                $task->image =\Storage::url("uploads/".$_FILES["file"]["name"][0]);
                $task->image2 =\Storage::url("uploads/".$_FILES["file"]["name"][1]);
                $task->save();
            }

        }
        $task->task_date = request('task_date');
        $dt1 = Carbon::now();
        $dt2 = Carbon::parse($task->task_date);
        if($dt1 > $dt2){
            echo $messages->first("You have to chose after today as the deadline");
            return redirect('/');
        }else{
            $dt3 = $dt1->diffInDays($dt2);
            $task->expired = $dt3;
        }


        $duplicate = Task::where('description',$request->get('description'))->first();
        $duplicateUser = Task::where('user_id',$request->get('user_id'))->first();
        $duplicateDate = Task::where('task_date',$request->get('task_date'))->first();
        if($duplicate&&$duplicateDate&&$duplicateUser)
        {
            return redirect('/')->with('popup', 'duplicate');
        } 
        else
        { 
            $task->save();
        } 

        return redirect('/'); 
    }
在我的任务模型中:

 protected $fillable = ['name','user_id','description','task_date'];

    public function user()
    {   
        return $this->belongsTo(User::class);
    }

    public static function Inputvalidator(Request $request){

            $rules = array(
            'user_id' =>'required|not_in:0'
            );
        $this->validate($request,$rules);
    }

    protected function getInputCredentials(Request $request){

        $validator = $this->inputvalidator($request);

        var_dump($validator); die();

        if($validator->passes())
        {
            return[
                'user_id' => Request::input('user_id')
            ];

            return true;
        }
        else{
            return redirect()->back()->withErrors();
        }
    }
但我现在出现了不同的错误,参数太少,请求需要实例。现在在这段代码中,它表示未定义的变量规则。我不太确定该如何修复此代码。你能帮我解决并检查这个代码正确与否吗?多谢各位

不要在Inputvalidator函数中传递$this->validate$request,$rules参数,只需按照函数的预期传递$request变量即可

//TaskController

$task->user_id = $request->get('user_id');
$val = Task::Inputvalidator($request); 
Laravel没有在模型内部使用请求验证以实现可重用性,而是在引擎盖下提供了简单性和可理解性

不要在Inputvalidator函数中传递$this->validate$request,$rules参数,只需按照函数的预期传递$request变量即可

//TaskController

$task->user_id = $request->get('user_id');
$val = Task::Inputvalidator($request); 
Laravel没有在模型内部使用请求验证以实现可重用性,而是在引擎盖下提供了简单性和可理解性

运行php artisan make:request TaskRequest

用以下内容填充新的app\Http\Requests\TashRequest.php文件:

在控制器中,执行以下操作: 如果上述验证失败,它将返回422,消息将自动准备从消息包中提取

资料来源:

野外的例子:

运行php artisan make:request TaskRequest

用以下内容填充新的app\Http\Requests\TashRequest.php文件:

在控制器中,执行以下操作: 如果上述验证失败,它将返回422,消息将自动准备从消息包中提取

资料来源:

野外的例子:



@谢谢你的帮助。我已经尝试过这个方法,但当不在对象上下文错误中时,它使用$this。那么在这个错误下我应该修复什么呢?$this->validate函数是存在于控制器内部的函数。我建议使用Laravel请求验证,而不是使用内部模型。希望如此helps@lizenshakya谢谢你的帮助。我已经尝试过这个方法,但当不在对象上下文错误中时,它使用$this。那么在这个错误下我应该修复什么呢?$this->validate函数是存在于控制器内部的函数。我建议使用Laravel请求验证,而不是使用内部模型。希望它能帮助您在模型中使用这些方法?我建议使用不同的方法。例如,创建一个包含验证和导入的请求类,并在控制器中使用该类。如果你愿意,我可以举个例子。我可以看看你打电话来的调度员吗?@JeremyKeney谢谢。你打电话来的那个管制员,请问你是什么意思?因为在我的例子中,我只使用任务控制器和任务模型。所以我不太确定该如何回答你的问题。很抱歉。控制器中包含以下内容的方法:$task->user\u id=$request->get'user\u id'$val=Task::Inputvalidator$this->validate$request$rules;模型中有这些方法吗?我建议采用不同的方法。例如,创建一个包含验证和导入的请求类,并在控制器中使用该类。如果你愿意,我可以举个例子。我可以看看你打电话来的调度员吗?@JeremyKeney谢谢。你打电话来的那个管制员,请问你是什么意思?因为在我的例子中,我只使用任务控制器和任务模型。所以我不太确定该如何回答你的问题。很抱歉。控制器中包含以下内容的方法:$task->user\u id=$request->get'user\u id'$val=Task::Inputvalidator$this->validate$request$rules;非常感谢。这真的有助于我理解。但我不太明白。YourMethodName此函数用于验证调用?它只是控制器中方法名称的占位符。这不是实际的方法名称。我不知道你的控制器是什么样子,所以它只是一个占位符。该行的外带是TaskRequest$request,而不是使用request$request的常规请求类。我已经更新了我的控制器。这是我想工作的地方。所以,我想知道如何在验证设置上工作?我已经做了更改。但现在出现了403错误屏幕。那我怎么修呢?谢谢。这真的有助于我理解。但我不太明白。YourMethodName此函数用于验证调用?它只是控制器中方法名称的占位符。这不是实际的方法名称。我不知道你的控制器是什么样子,所以它只是一个占位符。该行的外带是TaskRequest$request,而不是使用request$request的常规请求类。我已经更新了我的控制器。这是我想工作的地方。所以,我想知道如何在验证设置上工作?我已经做了更改。但现在出现了403错误屏幕。那我该怎么修呢?

<?php

namespace App\Http\Controllers;

...

use App\Http\Requests\TaskRequest;

...

class YourControllerName extends Controller
{

...

    public function yourMethodName(TaskRequest $request)
    {
        $validatedData = $request->validated();

...