php - 验证设置
问题描述
现在我正在努力在用户没有输入哪个用户将处理任务时创建验证。user_id 输入在选项列表中列出。在任务控制器中:
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();
}
}
但是我现在遇到了不同的错误,参数太少,请求需要实例。现在在这段代码下,它表示未定义的变量规则。我不太确定应该如何修复此代码。您能帮我解决并检查此代码是否正确吗?谢谢你。
解决方案
Run
php artisan make:request TaskRequest
Fill the new
app\Http\Requests\TashRequest.php
file with:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class TaskRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'user_id' =>'required|not_in:0',
];
}
}
- In the controller do something like:
<?php
namespace App\Http\Controllers;
...
use App\Http\Requests\TaskRequest;
...
class YourControllerName extends Controller
{
...
public function yourMethodName(TaskRequest $request)
{
$validatedData = $request->validated();
...
If the validation above fails it will return back with a 422 and the messages automatically ready to be pulled from the message bag.
Sources:
Example in the wild:
推荐阅读
- hyperledger-fabric - 错误:获取链码代码 fabcar 时出错:无法确定平台类型:未知链码类型:未定义
- c - 错误消息地址的示例程序未堆栈、malloc 或(最近)释放
- android - 如何在 onPostExecute kotlin 中使用表达式
- reactjs - 如何确保 react-redux 应用程序是根据最新请求呈现的?
- context-free-grammar - 如何找到一种语言的语法,其中一个符号的重复次数不及其他符号的总和?
- azure - 更改恢复服务保管库中的冗余?
- javascript - React hooks:引用组件的父级
- javascript - NestJS:记录来自 HttpService 调用的请求/响应?
- c++ - Qt moveCursor 不再改变选择边界
- kubernetes - 如何让 Kubernetes Pods 对某些连接使用透明的 SOCKS5 代理?