Php 验证设置
现在我正在创建一个验证,当用户没有输入哪个用户将处理任务时。用户id输入在选项列表中显示。在TaskController中: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(
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();
...