laravel 中路由规则可以自己定义!然后去使用。路由文件的位置在routes/web.php
1)、路由的定义格式:Route::请求方式(‘请求的URL’, 匿名函数或控制器响应的方法)
例;Route::get(‘/’,function(){return ‘hello word’});函数的返回值,就是请求的响应。
2)、路由中请求类型:
Route::get(‘$url’, $callback);
Route::post(‘$url’, $callback);
Route::put(‘$url’, $callback);
Route::patch(‘$url’, $callback);
Route::delete(‘$url’, $callback);
Route::option(‘$url’, $callback);
有时候还需要注册路由响应多个http请求,可以通过match()方法来实现,或用any()方法注册一个路由来响应所有的http请求。
例:
Route::match(['get','post'],'/',function(){
//
});
Route::any('foo',function(){
//
});
3)、路由的传参:在访问的时候也可以进行传参,传的参数要用{}括起来,参数分为可选参数和必选参数
必选参数:有时候我们需要在路由中捕获URL片段,比如,要从URL中获得用户ID ,需要通过如下方式定义路由参数:
可选参数:有时候可能需要指定可选的路由参数,这可以通过在参数名后面加一个?标记实现,这种情况下要给相应变量指定默认值。
//必选参数
Route::get('user/{id}',function($id){
return 'User'.$id;
});
//可选参数
Route::get('user/{name?}',function($name=null){
return $name;
});
Route::get('user/{name?}',function($name='John'){
return $name;
});
当你进行访问的时候,有参数而你没有传参则会报错,如果不想让他报错就需要给参数一个默认值null,在命名传参的时候要在后面加?
例: Route::get('hello5/{id?}',function($id=null){
return $id;
});
路由参数也可以进行正则匹配
Route::get('hello6/{id?}',function($id=null){
return $id;
})->where('id','[A-Za-z]+');
路由参数也可以进行多个参数,也可以进行多个参数的正则匹配
Route::get('hello7/{id}/{name}',function($id,$name){
return $id.$name;
})->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);
路由别名:路由别名是为了拿这个方法的路径 方法route() 是用来拿到路径的
Route::get('user/{name?}',function($name='John'){
return $name;
})->name('zhangsan');
在命令行终端,可以使用命令以下命令查看系统已经定义好的路由别名:php artisan route:list
路由群组
把许多有共同前缀的的路由,为了方便管理,放到同一个分组中,使用prefix指定路由前缀。
Route::group(['prefix'=>'admin'],function(){
Route::get('user',function(){
//
});
Route::get('food',function(){
//
});
});
Route::get('Index/index/{id?}','IndexController@index');
可以把每个控制器中的方法创建成一个群组方便管理
例:
Route::group(['prefix'=>'Index'],function(){
//welcome方法
Route::get('welcome','IndexController@welcome');
//member方法
Route::get('member/{id?}/{name?}','IndexController@member');
});
【注】反斜杠不一样
return view('视图文件名称');
视图可以进行分目录管理,例如需要展示home/test/test3视图,则可以写成:return view('home/test/test3'),当然也支持点的写法:view('home.test.test3')
控制器给视图传递的数据形式有,字符串,数组,变量等,
view(模板文件名,数组)
view(模板文件名)->with(数组)
view(模板文件名)->with(名称,值)->with(名称,值)
compact函数是PHP内置函数,跟laravel框架没关系,该函数的作用:用于打包数组。
1:在写模型时要先继承父类模型:use Illuminate\Database\Eloquent\Model;
2:模型在控制器中的使用方式有两种:
①直接以调用静态方法为主的形式,该形式下模型不需要实例化,例如:Member::get()等价于 DB::table('member')->get();
②实例化模型然后再使用模型类:例如:$member=new Member(); $member->get();
例: {{$name}};
1、常规的直接响应,例:展示视图:return view('welcome'); 直接返回某个字符串:return 'hello world';
2、ajax响应: return response()->json(需要json输出的数据),例:
public function test(){
$data=Member::all();
return response()->json($data);
}
补充:boolean值在laravel 中是不能通过return输出的,所以response也是不能响应bool值。
3、跳转响应(重定向)也有两种方式:return redirect('路由'); (该路由可以是完整的请求路由,也可以是通过route()+别名获取的路由) 或者 return redirect()->to('路由');