在搜索栏中,我希望将请求限制为:数字或符号,并且仅保留字符。用户只能在请求中输入名称。
我陷入了自己的职能...
public function index(Request $req){
if($req->search == ""){
$students = Student::paginate(5);
return view('admin.students.index', compact('students'));
} else {
$students = Student::where('nom', 'LIKE', '%' .$req->search . '%')
->paginate(5);
$students->appends($req->only('search'));
return view('admin.students.index', compact('students'));
}
}
非常感谢您的帮助。
答案 0 :(得分:2)
您可以添加一个仅包含alpha
个字符的验证:
public function index(Request $req)
{
if ($req->has('search') && !empty($req->search)) {
// validate here
$validated = $req->validate([
'search' => 'alpha', // must be entirely alphabetic characters
]);
$students = Student::where('nom', 'LIKE', '%' . $validated['search'] . '%')->paginate(5);
$students->appends($req->only('search'));
return view('admin.students.index', compact('students'));
}
$students = Student::paginate(5);
return view('admin.students.index', compact('students'));
}
如果验证失败,它将立即重定向回您需要显示的错误消息。
alpha
验证中的字段必须完全是字母字符。
答案 1 :(得分:2)
首先保护您的字段,以向用户提供即时反馈给用户。在表单刀片中:
<input type="text" name="search" value="{{ isset($search) ? $search : '' }}" pattern="[a-zA-Z]+" placeholder="search" />
validate到alpha numeric的搜索字符串:
$this->validate($reqest,[
'search' => 'alpha_num',
]);
或仅alpha:
$this->validate($request,[
'search' => 'alpha',
]);
较新的版本(5.6+),请求可以验证自己而不是控制器,并返回经过验证的字段以提供更多保护,因此相同的外观如下:
$data = $request->validate([
'search'=>'alpha',
]);
接受上面的HTML5输入并将代码添加到show validation errors中,以便我们可以看到何时出现错误。我们得到一个看起来像这样的表格:
<form method="get" action="{{route('student.index')}}">
<input type="text" name="search" value="{{ isset($search) ? $search : '' }}" pattern="[a-zA-Z]+" placeholder="search" />
@if ($errors->has('search'))
<div class="error">{{ $errors->first('search') }}</div>
@endif
<input type="submit" />
</form>
将其应用于您的代码:
public function index(Request $request)
{
$data = $request->validate([
'search' => 'alpha',
]);
$students = isset($data['search']) ? Student::where('nom','like','%' . $data['search'] . '%')->paginate(5) : Student::paginate(5);
return view('admin.students.index', compact('students','search'));
}