版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33867131/article/details/85777639
1、表单提交(增)
(1)配置路由web.php
Route::post('/projects', 'ProjectsController@store')->name('project.store');
(2)html模板文件里这样写,提交到name=projects.update的路由
{{--{!! form::text('name', '$value', [$options]) !!} 参数名,参数值,bootstrap样式(可以不写)--}}
{!! Form::open(['route'=>'project.store', 'method'=>'POST', 'files'=>'true']) !!}
<div>
<div class="form-group">
{!! Form::label('name', '项目名称:') !!}
{!! Form::text('name', '', ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('thumbnail', '项目缩略图:') !!}
{!! Form::file('thumbnail', ['class'=>'form-control-file']) !!}
</div>
<div>
{!! Form::submit('新建项目', ['class'=>'btn btn-primary']) !!}
<div>
</div>
{!! Form::close() !!}
(3)在ProjectsController里新建store()方法
public function store(Request $request){
// 通过关系储存数据,不用再单独存user_id字段,已经自动存储了
$request->user()->projects()->create([
'name'=> $request->name,
'thumbnail'=> $request->thumbnail
]);
// 如果不通过关系,就需要手动添加user_id字段
//Project::create([
// 'name'=> $request->name,
// 'thumbnail'=> $request->thumbnail,
// 'user_id'=> $request->user()->id
//]);
return '保存成功';
}
2、表单提交(删)
(1)配置路由web.php,携带参数project
Route::delete('/projects/{project}', 'ProjectsController@destroy')->name('projects.destroy');
(2)html模板文件里这样写,提交到name=projects.destroy的路由,并且携带参数id
{!! Form::open(['route'=>['projects.destroy', $project->id], 'method'=>'DELETE']) !!}
<button type="submit" class="btn-default"><i class="fa fa-btn fa-times"></i></button>
{!! Form::close() !!}
(3)在ProjectsController里新建destroy()方法
方式一:
public function destroy($id){ // 接收通过路由传来的id
// Project::findOrFail($id)能够找到id=$id的项目,再调用delete()方法删除
Project::findOrFail($id)->delete();
// 删除成功之后返回首页
return back();
}
方式二:
// 当成Project表的实例$project来接收
public function destroy(Project $project){
// 框架会自动去Projects表里删除对应id的那一条数据(实例)
$project->delete();
return back();
}
3、表单提交(改)
(1)配置路由web.php,携带参数project
Route::patch('/projects/{project}', 'ProjectsController@update')->name('projects.update');
(2)html模板文件里这样写,提交到name=projects.update的路由,并且携带参数id
{!! Form::model($project, ['route'=>['projects.update', $project->id],
'method'=>'PATCH', 'files'=>'true']) !!}
<div>
<div class="form-group">
{!! Form::label('name', '项目名称:') !!}
{!! Form::text('name', null, ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('thumbnail', '项目缩略图:') !!}
{!! Form::file('thumbnail', ['class'=>'form-control-file']) !!}
</div>
<div class="form-group">
{!! Form::submit('编辑项目', ['class'=>'btn btn-primary']) !!}
</div>
</div>
{!! Form::close() !!}
(3)在ProjectsController里新建update()方法
public function update(Request $request, $id){
$project = Project::findOrFail($id);
$project->name = $request->name;
if($request->hasFile('thumbnail')) {
// 存储原始图片
$thumb = $request->thumbnail;
$name = $thumb->hashName();
$thumb->storeAs('public/thumbs/original', $name);
$project->thumbnail = $name;
}
$project->save();
return back();
}
4、查
(1)配置路由web.php,输入网址先走HomeController下的root()方法
Route::get('/', 'HomeController@root');
(2)在HomeController里新建root()方法
public function root()
{
// 查询当前用户创建的所有项目
$projects = request()->user()->projects()->get();
// 将查询结果赋值给前端HTML页面
return view('welcome', compact('projects'));
}
(3)模板文件welcome.blade.php里遍历数据
@foreach($projects as $project)
{{ $project->name }}
@endforeach