摘要:Laravel阶段总结 一.路由 在routes/web.php中写入路由 1.Route::get()来设置get请求的路由参数//访问根目录时,返回welcome视图 Route::get('/', function ()
Laravel阶段总结
一.路由
在routes/web.php中写入路由
1.Route::get()来设置get请求的路由参数
//访问根目录时,返回welcome视图
Route::get('/', function () {
return view('welcome');
});
//访问/hello时,返回hello视图
Route::get('/hello', function () {
return view('hello');
}); 2.Route::post()设置post请求的路由参数
//post请求hello2,返回html代码
Route::post('hello2',function (){
return '<h1>hello2</h1>';
}); 3.Route::match()匹配第一个参数数组中的请求方式的路由参数
//match 匹配数组中方式
Route::match(['get','post'],'hello3',function (){
return '<h1>get/post请求返回</h1>';
}); 4.Route::any() 任何请求方式的路由参数
Route::any('hello4',function (){
return '<h4>任何方法</h4>';
}); 5.Route::view()单请求方式
Route::view('/','welcome'); //访问根目录 返回welcome视图 6.Route('路径/{参数名}')路由参数 {参数?}为可选参数,需要在后面的闭包中传入默认值.求要写到必选参数后面以防出错
Route::get('new2/{name}/{id?}',function ($name,$id=1){
return '我的名字'.$name.' id = '.$id;
}); 7.Route::get()->where(array)验证路由参数的规则(正则)
Route::get('new3/{name}/{id?}',function ($name,$id){
return '我的名字'.$name.' id = '.$id;
})->where(
['name'=>'[a-zA-z]+', //name必须是一个或以上的字母
'id'=>'[0-9]*' //id必须是0-9的数字
]); 8.设置控制器访问路由 模块/控制器@方法
Route::get('admin/index/{course?}','admin\Index@index');--------------------------------------------------------------------------
二.控制器 在app/Http/controllers里
1.简单的一个控制器 返回视图admin模块/index控制器/index方法的视图 对应resources/views/admin/index/index.blade.php
public function index($course = 'laravel'){
return view('admin.index.index',['course'=>$course]);
}-----------------------------------------------------------------------------
三.请求对象
1.构造方法注入请求对象
就是在构造器中将请求对象以参数的形式传入构造方法中
这样只要访问这个控制器,都会触发先触发这个构造方法
use Illuminate\Http\Request;
class Index
{
protected $request = null;
//构造方法注入
public function __construct(Request $request)
{
$this->request = $request;
dump($this->request);
} 2.普通方法注入
protected $request = null;
public function demo(Request $demo)
{
$this->request = $demo;
dump($this->request);
}
//访问admin 模块的index控制器的demo方法
//Route::get('admin/demo','admin\Index@demo'); 3.依赖注入方法获取请求对象参数 use Illuminate\Http\Request;
注入到普通方法中后,可以使用这个对象中的很多方法
也可以通过对象属性的方法来获取参数
public function reque(Request $request)
{
//获取所有普通参数
dump($request->input());
//获取指定参数
dump($request->input('name'));
//获取不存在的参数
dump($request->input('salary',6000));
//仅获取一个参数
dump($request->only('name'));
//获取除了指定的其他的普通参数
dump($request->except('name'));
//获取路由变量
dump($request->route('id'));
// dump($request->route());
//对象属性方法获取参数
dump($request->name);
dump($request->id);
} 4.助手函数requset()来获取参数
//助手函数获取url参数
public function delete()
{
dump(request()->input());
//获取指定参数
dump(request()->input('name'));
//获取不存在的参数
dump(request()->input('salary',7000));
//仅获取一个参数
dump(request()->only('name'));
//获取除了指定的其他的普通参数
dump(request()->except('name'));
//获取路由变量
dump(request()->route('id'));
//对象属性方法获取参数
dump(request()->name);
dump(request()->id);
}-------------------------------------------------------------------------------
四.响应对象
1.返回字符串
Route::get('admin/test',function (){
return 'laravel';
}) 2.返回数组,会自动转换为json格式
Route::get('admin/test2',function (){
return ['name'=>'darwin','age'=>20];
}); 3.返回对象 use Illuminate\Http\Response;
setContent()设置内容
header()设置请求头
cookie()设置cookie()
use Illuminate\Http\Response;
Route::get('admin/test3',function (Response $response){
return $response->setContent('塞尔达天下第一');
});
Route::get('admin/test4',function (Response $response){
return $response->setContent('塞尔达天下第一')
->header('content-type','application/json')
->cookie('name','塞尔达');
}); 4.助手函数 response('内容')
Route::get('admin/test5',function (){
return response('塞尔达天下第一!!!')->setContent('真的!!!')
->header('content-type','application/json')
->cookie('name','塞尔达');
}); 5.视图响应 view()返回对应视图模板
Route::get('admin/test6',function (){
return response()->view('welcome');
}); 6.转换json格式 json()
Route::get('admin/test7',function (){
return response()->json(['name'=>'darwin','age'=>20]);
});
批改老师:天蓬老师批改时间:2019-01-21 17:49:43
老师总结:其实一个访问 , 应该从路由开始, 这是非常自然的, 其中闭包路由, 无疑是最简单的, 也是最方便的,可以做非常多的事