laravel学习之学生管理项目基础剖析
2016-11-21 19:13
387 查看
初学laravel的时候,由于之前自学过TP框架,感觉laravel的目录好乱。但是被称为最美的框架一定是有原因的。
然后我跟着慕课网的 天秤VS永恒 老师学做了一个学生管理项目。并且我已经放在了我自己的项目中。如果你喜欢的可以去看下。
https://github.com/XiaoTommy/laravel-demo
以下是我的项目中的一些注释,只适合初学laravel没有一点头绪的童鞋。这里都是基本的知识。基本看一遍就会了。当然,我也正在一步一步的学习laravel。laravel是一个及其浩大的任务。一起加油。
当然,我的其中肯定会有很多错误,非常希望你能指出来。毕竟我也是初学者嘛~关于laravel的知识点还有很多很多。我这里仅仅的基础的也不是特别的全。但是都是十分重要的。
laravel中的基本目录, 这里我使用的phpstorm编辑器。非常强大。
![](https://img-blog.csdn.net/20161121191750603?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161121191812260?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
一下是StudentController 代码,其中一些注释对理解很有用处(MVC中的Controller)
一下是Student 代码,其中一些注释对理解很有用处(MVC中的Model)
另外MVC中的view没有贴出来。
路由 routes.php 中的相关代码
另外推荐 天秤VS永恒 的课程 http://www.imooc.com/search/?words=laravel 如果你有更好的laravel自学课程,我非常希望你能留言告诉我。让咱们一起学习laravel。
然后我跟着慕课网的 天秤VS永恒 老师学做了一个学生管理项目。并且我已经放在了我自己的项目中。如果你喜欢的可以去看下。
https://github.com/XiaoTommy/laravel-demo
以下是我的项目中的一些注释,只适合初学laravel没有一点头绪的童鞋。这里都是基本的知识。基本看一遍就会了。当然,我也正在一步一步的学习laravel。laravel是一个及其浩大的任务。一起加油。
当然,我的其中肯定会有很多错误,非常希望你能指出来。毕竟我也是初学者嘛~关于laravel的知识点还有很多很多。我这里仅仅的基础的也不是特别的全。但是都是十分重要的。
laravel中的基本目录, 这里我使用的phpstorm编辑器。非常强大。
一下是StudentController 代码,其中一些注释对理解很有用处(MVC中的Controller)
<?php namespace App\Http\Controllers; use App\Student; use Illuminate\Http\Request; //该文件是MVC框架中的Controller class StudentController extends Controller{ //显示学生列表页 ,该方法对应的view文件位于 resources/views/student/index.blade.php 下 public function index(){ //创建模型,以实现以下功能 $students = Student::get(); //paginate 是创建分类的意思 每页20条信息 $students = Student::paginate(20); //返回 resources/views/student/index 文件,并且输出student实例中的数据,也就是我们从数据库中找到的数据 return view('student.index',[ 'students'=>$students, ]); } //显示添加学生信息页,该方法对应的view文件位于 resources/views/student/create.blade.php 下 public function create(Request $request){ //创建实例 $Student = new Student(); //判断时候收到POST请求,因为页面原先是get请求。所以需要判断时候是POST请求,然后才能创建 if($request->isMethod('POST')) { //1.控制器验证。这个地方我们使用控制器验证(也叫作数据过滤)。验证用户输入的数据是否合法。 // $this->validate($request,[ // 'Student.name'=>'required|min:2|max:20', // 'Student.age'=>'required|integer', // 'Student.sex'=>'required|interger', // ],[ // //此处是为了在页面上显示报错数据。:attribute是占位符的意思 // 'required'=>':attribute 为必填项', // 'min'=>':attribute 长度不符合要求', // 'max'=>':attribute 长度不能超过20个字符', // 'interger'=>':attribute 必须是整形', // ],[ //响应占位符 // 'Student.name'=>'姓名', // 'Student.age'=>'年龄', // 'Student.sex'=>'性别', // ]); //2.validate类验证 $validator = \Validator::make($request->input(),[ 'Student.name'=>'required|min:2|max:20', 'Student.age'=>'required|integer', 'Student.sex'=>'required|integer', ],[ 'required'=>':attribute 为必填项', 'min'=>':attribute 长度不符合要求', 'max'=>':attribute 长度不能超过20个字符', 'integer'=>':attribute 必须是整形', ],[ 'Student.name'=>'姓名', 'Student.age'=>'年龄', 'Student.sex'=>'性别', ]); //如果有错误就重定向到指定页面。redirect()---重定向 back()---重定向到上一个页面 withError()---找出报错信息 withInput()---输出报错信息 if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } //接受request过来的信息 $data = $request->input('Student'); //向数据库中添加信息,并且判断是否添加成功 if (Student::create($data)) { //如果添加成功,则重定向到index页面,并且输出添加成功的信息 return redirect('student/index')->with('success', '添加成功'); } else { //否则,退回上一个页面 return redirect()->back(); } } //经过一系列的创建实例,验证信息,添加数据库的操作后,把添加的数据返回到创建页面, return view('student.create',[ //这个操作是为了在view中显示响应的数据 'student'=>$Student ]); } //向数据库保存添加,接受传过来的 $request,然后保存起来,此方法没有对应的view页面,作用就是保存数据到数据库 public function save(Request $request) { $data = $request->input('Student'); //创建一个student实例,并且分别把对应的name age sex 填入到数据库中 $student = new Student(); $student->name=$data['name']; $student->age=$data['age']; $student->sex=$data['sex']; //如果添加成功,则返回index页面,否则返回上页面 if($student->save()){ return redirect('student/index'); }else{ return redirect()->back(); } } //更新学生信息页面。该方法对应的view文件位于 resources/views/student/update.blade.php 下 //更新信息需要注意的是,页面效果和create差不多,但是首先要接受到响应id的数据,显示到页面才能修改 public function update(Request $request, $id){ //找到响应ID的学生信息,并且赋给 $student 这个数组 $student = Student::find($id); //判断传过来的时候是POST方法 if($request->isMethod('POST')){ //进行数据验证 $this->validate($request, [ 'Student.name' => 'required|min:2|max:20', 'Student.age' => 'required|integer', 'Student.sex' => 'required|integer', ], [ 'required' => ':attribute 为必填项', 'min' => ':attribute 长度不符合要求', 'integer' => ':attribute 必须为整数', ], [ 'Student.name' => '姓名', 'Student.age' => '年龄', 'Student.sex' => '性别', ]); //更新就类似于重新输入而已,所以和create步骤基本相同 $data = $request->input('Student'); $student->name = $data['name']; $student->age = $data['age']; $student->sex = $data['sex']; //判断时候保存 if($student->save()){ return redirect('student/index')->with('success', '修改成功-'.$id); } } //显示更新页面,并且伴随着更新之后的数据 return view('student.update',[ 'student'=>$student ]); } //学生详细信息页面,该方法对应的view文件位于 resources/views/student/detail.blade.php 下 public function detail($id){ //根据id从数据库中找到相应的数据 $student = Student::find($id); //显示响应的页面,并且输出响应的内容 return view('student.detail', [ 'student'=> $student ]); } //学生删除方法,该方法没有响应的页面,只有操作成功或者失败后显示响应的信息 public function delete($id){ //根据id找到响应的数据 $student = Student::find($id); //从数据库中删除数据。这里就是laravel厉害的地方了,直接一个delete就可以解决了。第一次写的时候,我都不敢相信就这样就可以删除。有时间的话一定要好好研究源代码 if($student->delete()){ //删除成功,跳转页面 return redirect('student/index')->with('success', '删除成功-'.$id); }else{ return redirect('student/index')->with('error', '删除失败'.$id); } } }
一下是Student 代码,其中一些注释对理解很有用处(MVC中的Model)
<?php namespace App; use Illuminate\Database\Eloquent\Model; //该页面属于MVC中的Model,这里是student Model class Student extends Model{ //定义类常量,在数据库中储存10 20 30 来代替相应的 未知 男 女 可以节省数据库的压力。而且操作也简单 const SEX_UN = 10; //未知 const SEX_BOY = 20; //男 const SEX_GRIL = 30; //女 //数据库中响应的表名是 student protected $table = 'student'; //为了可以传参数的时候多参数的传参,我们自定义可以传递以下三个参数 protected $fillable = ['name', 'age', 'sex']; //默认使用时间戳功能,当我们在数据库中创建 create_at updated_at 字段的时候,laravel会自动帮我们生成响应的时间戳 public $timestamps = true; //禁止时间戳转换为字符串时间 protected function getDateFormat(){ return time(); } //select的时候可以避免时间转换成字符串时间 protected function asDateTime($val){ return $val; } //创建一个sex()方法,用来判断该选项之前是否已经选定,如果选定,返回之前的。没有选定,则显示未知。 //响应的name age 没有类似的方法是因为他们有 old() public function sex($ind = null){ $arr = [ self::SEX_UN => '未知', self::SEX_BOY => '男1', self::SEX_GRIL => '女', ]; if($ind !== null){ return array_key_exists($ind, $arr)?$arr[$ind]:$arr[self::SEX_UN]; } return $arr; } }
另外MVC中的view没有贴出来。
路由 routes.php 中的相关代码
//路由,这属于中间件式路由,如果没有放在数组中则是普通的路由 Route::group(['middleware' => ['web']], function () { //路由的格式如下,url访问的是 localhost/laravel-demo/public/student/index 相应对就可以连接到 StudentController中的index方法中 Route::get('student/index', ['uses'=>'StudentController@index']); Route::any('student/create', ['uses'=>'StudentController@create']); Route::any('student/save', ['uses'=>'StudentController@save']); //此处的路由属于传参路由,url格式是 localhost/laravel-demo/public/student/update/1012 Route::any('student/update/{id}', ['uses'=>'StudentController@update']); Route::any('student/detail/{id}', ['uses'=>'StudentController@detail']); Route::any('student/delete/{id}', ['uses'=>'StudentController@delete']); });
另外推荐 天秤VS永恒 的课程 http://www.imooc.com/search/?words=laravel 如果你有更好的laravel自学课程,我非常希望你能留言告诉我。让咱们一起学习laravel。
相关文章推荐
- 使用git和github管理自己的项目---基础操作学习
- 使用git和github管理自己的项目---基础操作学习
- ☆首发☆非常适合学习理解laravel的项目--图书管理系统
- 使用git和github管理自己的项目---基础操作学习
- 使用git和github管理自己的项目---基础操作学习
- 【git学习二】git基础之git管理本地项目
- 使用git和github管理自己的项目---基础操作学习
- Mac升级git版本 以及 使用git和github管理自己的项目---基础操作学习
- 【git学习二】git基础之git管理本地项目
- 项目管理基础学习
- 使用git和github管理自己的项目---基础操作学习
- 项目管理基础培训课学习笔记
- 项目管理学习笔记三:项目管理一般知识
- 【学习笔记】信息系统项目管理-项目采购管理-合同分类
- 我的Laravel学习之路之migration Laravel自带命令行数据库创建和管理工具
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第九章 内存管理
- JAVA课程学习九:类训练-学生管理实现
- Laravel小项目之第2节 Laravel-静态资源管理及模板布局
- 敏捷开发系列学习总结(6)——你用什么工具管理项目