Laravel学习笔记之二
前面我们扯淡的写了一片laravel学习笔记,估计没有几个哥们看,看了也没看出个所以然来,接下来我们正式的开始。
1.laravel路由之资源路由
laravel 为我们提供了一个神级的路由------资源路由(resource),用起来是杠杠的,不用麻烦我们写一大堆的get或者post等其他的路由.不过写资源路由的时候必须的记清楚以下表中的内容:
方法 | 路径 | 动作 |路由 名称
GET | /photos |index |photos.index
GET |/photos/create|create|photos.create
POST|/photos|store|photos.store
GET |/photos/{photo}|show|photos.show
GET |/photos/{photo}/edit|edit|photos.edit
PUT/PATCH|/photos/{photo}|update|photos.update
DELETE|/photos/{photo}|destroy|photos.destroy
上面主要介绍了资源路由所对应的控制器中的方法,一般是能够满足我们对数据的操作,比如对数据的增删改查(store 方法保存 create 获取增加页面 index加载首页...)
看懂上表中的内容,我们来写一个路由:
Route::resource('photos','TestController');
写完上面的路由然后在新建一个叫做TestController的控制器,这时候很多同志们会手工去建,如果手工去建那就out了,laravel为我们提供了更好的方式,命令建一个资源型的控制器:
php artisan make:controller TestController --resource
运行上面的命令就会创建一个控制器TestController 并且控制器中有生成好的对应的方法,内容如下所示:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
每个方法对应着上面表中所提到的内容
接下来是访问了这些方法了,链接怎么写:
1.访问index方法
<a href="{{url('photos')}}"> 列表页 </a>
2.访问添加页面
<a href="{{url('photos/create')}}">添加新数据</a>
3.访问编辑页面
<a href="{{url('photos/2/edit')}}">编辑</a>
这里的2指的是要编辑的那条数据的id或者其他
4.访问详情页面
<a href="{{url('photos/2')}}">访问详情页面</a>
5.添加页面表单提交数据:
action="{{url('photos')}}" method="post"
注意:在提交的时候 表单中需要添加 {{csrf_field()}},来检测_token防止csrf攻击
6.编辑页面表单提交数据
action="{{url('photos'.$photo)}}" method="put"
注意:
1.这里的$photo 指的是你要编辑的这条数据的id或者是其他
2.编辑表单的提交方式是put方式提交 本身表单是没有put方式的 所以需要在表单中加 {{ method_field('PUT') }} 来伪造表单
3.如果是ajax提交 只需要给表单添加一个隐藏的 _method 字段就OK了
7.删除一般我们是做ajax删除
var id = id;
$.ajax({
type:"delete",
url:"{{url('photos')}}"+'/'+id,
success:function( msg ) {
},
error:function( msg ) {
}
})
OK,一般的增删改查做完了,接下来修改状态 发现少一个方法,在控制器中添加一个方法:
public function set_status(Request $request) {
}
这个方法不在资源路由的方法中 所以资源路由是访问不到的 所以要追加一个路由
Route::get('photos/status/{photos}','TestController@set_status');
在追加路由的时候需要注意: 需要把追加的这条路由放置在资源路由的上面也就是说如下代码的写法:
Route::get('photos/status/{photos}','TestController@set_status');
Route::resource('photos','TestController');
简单的Larvarl资源路由使用给撸完毕了,下一篇再会。