laravel框架开发---响应

在laravel中,响应正常情况下有2个类型。
1、常规的直接响应
2、ajax响应
其中展示视图以及直接响应都属于常规的响应

  • 展示视图:return view('welcom');
  • 直接返回某个字符串:return 'hello world'

ajax响应

语法:return response->json(需要json输出的数据)
数据是数组格式,对象也可以

案例:创建一个路由,访问对应的页面后,获取member表的信息,页面输出json格式的响应

1.创建路由

Route::get('home/test/test29','TestController@test29');

2.创建控制器方法

public function test29(){
	//获取member数据
	$data=Member::all();
	return response()->json($data);
}

注意:在框架中建议不要再去使用PHP自带的json_encode方法进行编码

2.跳转响应

常见的重定向状态码:301(永久重定向)是服务器发出的,302(临时重定向)服务器或者代码发出的,304(没有修改),当本地浏览器向服务器发送请求,服务器接收请求后发现资源没有变化,服务器就要求浏览器从客户端进行获取

还有一些页面,例如同步添加操作,完成操作之后不能停留在当前页面,最好做一个跳转操作,也就是需要一个跳转的响应

以之前的“上传操作代码”为例,后续比较理想的情况应该是在处理完成之后需要一个跳转提示,告知用户是否成功,成功则应该返回上一页,失效则应该输出错误提示

两个跳转方式任选一个:
return redirect(路由)->withErrors([]) 简写成:return redirect(路由)

return redirect()->to(路由)->withErrors([]) 简写成:return redirect(路由)

错误信息的获取与之前自动验证那里的方式一样,通过$errors变量获取即可

案例代码:要求更改之前上传文件的方法,要求在添加成功后跳转到首页,失败则返回上一页(test8)携带错误信息

1.创建路由

Route::get('test22','TestController@test22');
Route::post('test23','TestController@test23');

2.创建控制器方法

public function test14(){
	return view('home.test.test14');
}
//自动验证测试方法
public function test22( Request $request){
	//判断数据的请求类型
		//自动验证
		$this->validate($request,[
			'name'=>'required|min:2|max:6',
			'age'=>'required|integer|min:0|max:100',
			'email'=>'required|email',
			'captcha'=>'required|captcha',
		]);
		//判断文件是否存在
		if($request -> hasFile('avatar') && $request-> file('avatar')->isValid()){
			$path=md5(time().rand(100000,999999)).'.'.$request->file('avatar')
				->getClientOriginalExtension();
			$request->file('avatar')->move('./uploads',$path);
			//获取全部的数据
			$data=$request->all();
			//将路径添加到数组中
			$data['avatar']='./uploads/'.$path;
			$result=Member::create($data);
				if($result){
					return redirect('/');
				}
					
		}else{
			return view('home.test.test14');
		}

}

你可能感兴趣的:(laravel)