【Laravel验证】验证是检查输入数据的过程。默认情况下, laravel提供使用ValidatesRequests特征来验证所有传入Http请求的基本控制器类。
让我们通过示例了解验证。
我们将创建一个应用程序, 在其中添加学生的姓名。
- 首先, 我们创建一个新的laravel项目, 在其中执行验证。输入下面在命令行工具中给出的命令
文章图片
上面的输出显示在xampp / htdocs目录中已成功创建了student_app项目。
- 创建项目后, 我们将首先通过数据库迁移创建一个模型。
文章图片
- 上面的语句在app文件夹中创建模型“ Student”, 在Migrations文件夹中创建模型“ create_students_table”。 “ create_students_table.php”文件的结构如下:
<
?phpuse Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStudentsTable extends Migration{/*** Run the migrations.** @return void*/public function up(){Schema::create('students', function (Blueprint $table) {$table->
bigIncrements('id');
$table->
string('name');
$table->
timestamps();
});
}/*** Reverse the migrations.** @return void*/public function down(){Schema::dropIfExists('students');
}}
上面的代码创建一个具有四个列(id, name, created_at, updated_at)的表“ students”。
用户表中可用的数据:
用户表
文章图片
- 使用以下命令迁移数据库中的以上更改:
文章图片
- 现在, 我们创建一个控制器来处理所有数据库操作。
文章图片
- 创建控制器后, 我们将创建控制器所有方法的路由。要创建路由, 我们需要在web.php文件中编写以下代码:
文章图片
- 在此步骤中, 我们将定义StudentController类的index()方法, 下面给出index()方法的代码:
public function index(){$student=Student::all();
return view('index', compact('student'));
}
- 现在, 我们为应用程序创建一个视图页面(index.blade.php)。
@extends('layout.master')@section('content')<
h1>
Student <
/h1>
<
form action=="{{ route('student.store') }}"method="Post">
@csrf<
div>
<
input type="text" name="name">
<
/div>
<
br/>
<
div>
<
input type="button" value="http://www.srcmini.com/Add Students">
<
/div>
<
/form>
<
ul>
@foreach($student as $students)<
li>
{{$students->
name}}<
/li>
@endforeach<
ul>
@endsection
上面代码的输出如下所示:
文章图片
我们知道StudentController的index()方法的URI是’ / student’ , 因此当我们访问url’ localhost / student_app / public / student’ 时, 它将调用index()方法。 index()方法返回index.blade.php文件的视图, 如上面的屏幕快照所示。
- 当我们在以上屏幕截图所示的文本框中输入数据时, 应将其保存在数据库中。为了实现这一点, store()函数的代码如下:
public function store(Request $request){$data=http://www.srcmini.com/$request->
validate([//validating the name field.'name'=>
'required']);
$student=new Student;
$student->
name=$request->
get('name');
$student->
save();
}
输出量
文章图片
当我们单击“添加学生”按钮, 然后刷新页面时, 输出为:
文章图片
正如我们在上面的屏幕截图中看到的那样, “ Himanshu”已添加到学生列表中, 这意味着“添加学生”按钮可以正常工作。
有时, 当我们不输入任何数据时会出现这种情况, 而我们按下“添加学生”按钮;这需要验证。我们在store()方法中添加了用于验证“名称”字段的验证代码, 但未显示任何错误消息。为了显示错误消息, laravel提供了显示错误消息的错误变量。它可以用作:
{{$errors->
first('name')}}
在index.blade.php中添加以上行后, index.blade.php文件的代码如下所示:
index.blade.php
@extends('layout.master')@section('content')<
h1>
Student <
/h1>
<
form action="{{ route('student.store') }}" method="Post">
@csrf<
div>
<
input type="text" name="name">
<
/div>
<
br/>
<
div>
{{$errors->
first('name')}}<
/div>
<
br/>
<
div>
<
button type="submit">
Add Students <
/div>
<
/form>
<
ul>
@foreach($student as $students)<
li>
{{$students->
name}}<
/li>
@endforeach<
ul>
@endsection
输出量
文章图片
我们还可以在文本框字段中限制字符。如果要在名称字段中输入至少5个字符, 则可以在验证函数中使用min字段。
public function store(Request $request){$data=http://www.srcmini.com/$request->
validate(['name'=>
'required|min:5']);
$student=new Student;
$student->
name=$request->
get('name');
$student->
save();
}
输出量
文章图片
文章图片
推荐阅读
- Laravel和Django的对比和区别
- Laravel和CodeIgniter的对比和区别
- Laravel视图详解
- Laravel数据库中的关系
- Laravel路由参数
- Laravel模板继承
- Laravel会话session
- Laravel路由控制器
- Laravel路由组