1 Star 0 Fork 0

LS李小双 / Laravel操作测试

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

项目说明

项目是基于Laravel5.6 搭建的一个shop商城

功能说明

这里是功能介绍

项目日志

项目的开发过程

2019-07-19 搭建环境

更改Composer源

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

安装Laravel

composer create-project laravel/laravel=5.6.* csjshop

  1. 修改路由 Route::get('/index',"IndexController@index");

  2. 创建控制器 php artisan make:controller IndexController

  3. 模拟登陆测试

@CSRF 已完成模拟登陆测试

  • 将项目从虚拟机移动到本机操作

  • 知识点 put提交数据

laravel想使用PUT提交表单,需要在表单中添加: 表单的method为POST方式

  • 使用laravel 完成前后台分离

首先需要完成后台页面的展示操作

使用布局文件

@extends('layouts.admin')
@section('content')
<!-- 内容 -->
<div class="col-md-10">
	<div class="jumbotron">
		<img src="/img/4.jpg"height="310px" width="100%" alt="">
		<h2>联想 后台管理系统</h2>
		<p>开发者 : 赵丰泰</p>
	</div>
</div>
@endsection

开始测试中间件

  1. 实现用户session 登录
  • 加载中间件
Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'adminLogin'],function(){

			// 后台首页
			Route::get('/','IndexController@index');

		});
  • 创建中间件
如何新建中间件
		php artisan make:middleware adminLogin

注册中间件(D:\laravel\yzmedu\yzm2\app\Http\kernel.php)

    protected $routeMiddleware = [
		    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
		    'adminLogin' => \App\Http\Middleware\AdminLogin::class,
		];
  • 中间件 代码
public function handle($request, Closure $next)
   {
       //处理用户登录
       //判断用户是否存在session
       //if($request->session()->get('username'))
       //dd($request->session()->get('username'));
       if($request->session()->get('username')){
           //让用户登录
           return $next($request);
       }else{
           return redirect("/admin/login");
       }

   }
  • 备注: Atom调试md文件还是不太熟悉, 把readme.md 用vsCode进行调试测试
  • 继续修改

闪存测试

  • 保存用户输入信息到闪存

主要是为了用户体验设计制作的

文件上传

  • 用laravel直接处理文件上传操作
        //处理上传文件
        if ($request->hasFile('photo')) {
            $ext = $request->file("photo")->getClientOriginalExtension();
            $newFile = time().rand().".".$ext;
            $request->file("photo")->move("./Uploads",$newFile);
        }else{
            return back();
        }

cookie相关操作

存储cookie
 Cookie::queue("website","www.gyarmy.com",5);

取出cookie
$site = $request->cookie("website");

视图测试

  • if foeach while 测试
            @foreach($data as $key=>$value)
				<span>{{$value->id}}</span>
				<span>{{$value->name}}</span>
				<span>{{$value->pass}}</span>
				@if($value->statu)
					<span>正常</span>
				@else
					<span>禁用</span>
				@endif
				<span>{{date('Y-m-d H:i:s',$value->time)}}</span>
			@endforeach
  • 模板布局的测试
        1\ 新建layout目录

		2、新建后台公共文件
			admin.blade.php

		3、打开后台公共文件

			#将每一个页面不一样的部分用 @yield('title')占位 ,一个页面可以有多个占位 用名字区分

		4、普通页面中该如何书写
			# 继承公共模板页面
			@extends('layout.admin')

			# 修改内容区域
			@section('title','云知梦后台v管理系统')

			@section('main')

			<div class="col-md-10">
				
				<div class="jumbotron">
				 	<img src="/admins/img/4.jpg"height="310px" width="100%" alt="">
				 	<h2>联想 后台管理系统</h2>
				 	<p>开发者 : 赵丰泰</p>
				</div>
			</div>

			@endsection

  • 文件包含
	@include('public.footer')

数据库操作

  1. 数据库的增删改查
         1、查询数据

			$data=\DB::select('select * from  user');

		2、删除数据
		 	如果删除成功 返回影响行数、
		 	var_dump(\DB::delete('delete from user where id>5'));

		3、增加数据
			返回值bool 如果成功 true 失败 false
			var_dump(\DB::insert("insert into user values(null,'123','123',0,'23131321')"));
		4、修改数据
		 	返回值 影响行数 
			var_dump(\DB::update('update user set name="帅哥" where id>3'));


		5、运行一段命令

			\DB::statement("create database yzmedu");
			\DB::statement("drop database yzmedu");

		6、事物机制

			\DB::beginTransaction();

		 	删除id=1数据

			$a=\DB::delete("delete from user where id=1");
		 	删除id=10数据
			$b=\DB::delete("delete from user where id=11");

			if ($a && $b) {
			    # code...
			     提交事务
			    \DB::commit();
			}else{
			     回滚事务
			    \DB::rollback();
			}

无刷新技术测试

  • 主要使用的是uoloadify插件

  • 具体使用方法

无刷新图片上传
	0、插件学习地址
		http://www.uploadify.com/demos/
	1、页面中必须引入插件 (D:\laravel\yzmedu\yzm2\resources\views\admin\pic\create.blade.php)
		<!-- 引入CSS -->
		<link rel="stylesheet" href="/up/uploadify.css">
		<!-- 引入JQ -->
		<script src="/admins/bs/js/jquery.min.js"></script>
		<!-- 引入文件上传插件 -->
		<script src="/up/jquery.uploadify.min.js"></script>

	2、页面中书写页面结构
		<div class="form-group">
			<label for="">IMG</label>
			<input type="file" name="" id="uploads">
			<div id="main">
				
			</div>
			<input type="hidden" name="img" id="imgs">
		</div>

	3、JS代码
		// 当所有HTML代码都加载完毕
		$(function() {
			// 声明字符串

			var imgs='';
			// 使用 uploadify 插件
	        $('#uploads').uploadify({
	        	// 设置文本
	            'buttonText' : '图片上传 美照',
	            // 设置文件传输数据
	            'formData'     : {
	            	'_token':'{{ csrf_token() }}',
	            	'files':'Goods',
	                
	            },
	            // 上传的flash动画
	            'swf'      : "/up/uploadify.swf",
	            // 文件上传的地址
	            'uploader' : "/admin/shangchuan",
	            // 当文件上传成功
	            'onUploadSuccess' : function(file, data, response) {

	            	// 拼接图片
	            	imgs="<img width='200px'  src='/Uploads/Goods/"+data+"'>";
	            	// 展示图片
	            	$("#main").html(imgs);
	            	// 隐藏传递数据
	            	$("#imgs").val(data);
	               
	            }
	        });
	    });
	4、路由地址
		Route::any('shangchuan','CommonController@upload');

	5、控制器

		// 公共控制器
		class CommonController extends Controller
		{
			// 文件上传的方法

			public function upload(Request $request){
				// 获取用户上传的内容
				$file=$request->file('Filedata');
				// 判断目录是否存在
				$dir=$request->input('files');
				if (file_exists("./Uploads/{$dir}")) {
				
				}else{
					mkdir("./Uploads/{$dir}");
				}
				// 判断上传的文件是否有效
				if ($file->isValid()) {	
					// 获取后缀
					$ext=$file->getClientOriginalExtension();
					// 生成新的文件名
					$newFile=time().rand().'.'.$ext;
					// 移动到指定目录
					$request->file('Filedata')->move('./Uploads/'.$dir,$newFile);
					echo $newFile;
				}
			}
		}
  • Ajax 删除操作测试!

  • 无刷新批量删除


1、JQ
		// 批量删除方法

		function delAll(){
			// 获取被选中数据的值
			var arr=[];
			// 获取所有的数据 并且是被选中的
			inputs=$(".inputs:checked");
			// 获取选中数据的value值
			for (var i = inputs.length - 1; i >= 0; i--) {
				// 把值压入到数组
				arr.push(inputs.eq(i).val());
			};
			// 把arr转换成字符串
			str=arr.join(',');
			// 发送ajax请求
			$.post('/admin/pic/delAll',{'str':str,'_token':'{{csrf_token()}}'},function(data){
				// 判断数据是否删除成功
				if (data==arr.length) {
					// 移除对应的数据
					for (var i = arr.length - 1; i >= 0; i--) {
						$("#tr"+arr[i]).remove();
					};
					// 修改数据个数
					tot=Number($("#tot").html())-Number(data);
					$("#tot").html(tot);
				}else{
					alert('删除失败');
				}
			});

		}

	2、控制器
		public function delAll(Request $request){

			$str=$request->input('str');

			$data=\DB::select("select * from pic where id in($str)");

			// 执行删除语句

			if ($a=\DB::delete("delete from pic where id in($str)")) {
				# code...
				// 删除图片
				foreach ($data as $value) {
					unlink("./Uploads/Goods/{$value->img}");
				}
				return $a;
			}else{
				return 0;
			}
		}
  • 无刷新排序的实现
  1. jquery编写
function changesort(obj,id)
	{
		//alert(id);
		var sortVal = $(obj).val();
		$.post("/admin/pic/sort",{'_token':"{{csrf_token()}}","id":id,"sort":sortVal},
		function(data){

			if(data)
			{
				window.location.reload();
			}else{
				alert("更新失败");
			}

		});
	}
  1. laravel代码实现
路由设置
Route::post("pic/sort","PicController@sort");


控制器的实现
public function sort(Request $request)
    {
        $id = $request->input("id");
        $sortValue = $request->input("sort");
        //echo $id."--".$sortValue;
        //执行更新操作
        $result = DB::update("update image set sort = ? where id=?",[$sortValue,$id]);

        if($result===1)
        {
            return 1;
        }else{
            return 0;
        }
    }

实现无刷新分页

 
控制器:

$result = DB::table("image")->orderBy('sort', 'desc')->paginate(3);
return view("Admin.pic.index")->with("result",$result);


视图:

<nav style="text-align:center;">
	{{ $result->links() }}
</nav>

表单验证的实现

  • 加密测试
        $pass = 123456;
        //echo md5($pass);
        $string = Crypt::encryptString($pass);
        $passD = Crypt::decryptString($string);
  • 数据验证测试
控制器验证规则

        $input = $request->all();
        $rules = [
            'username'=>'required|unique:user|between:1,4',
            "password"=>'required|between:6,12|same:repassword',
            ];

        // 修改提示信息

        $message=array(

            "username.required"=>"请输入用户名",
            "username.unique"=>"用户名以存在",
            "username.between"=>"用户名长度不满足",
            "password.required"=>"请输入密码",
            "password.between"=>"密码长度不满足",
            "password.same"=>"两次密码不一致",
        );


        $validator = Validator::make($input,$rules,$message);

        if ($validator->fails()) {
            return back()
                ->withErrors($validator)
                ->withInput();
        }else{
            //验证通过的话
            $username = $request->input("username");
            $password= $request->input("password");
            $status = $request->input("status");

            $userInfo= [
                "username"=>$username,
                "password"=>$password,
                "status"=>$status,
                "time" =>date("Y-m-d H:i:s",time())
            ];

            $result = DB::table("user")->insert($userInfo);
            if($result)
            {
                return redirect("/admin/user");
            }else{
                return back();
            }

        }


视图层显示错误

        <!--显示错误信息-->
		@if ($errors->any())
			<div class="alert alert-danger">
				<ul>
					@foreach ($errors->all() as $error)
						<li>{{ $error }}</li>
					@endforeach
				</ul>
			</div>
		@endif

登录页面引入验证码

导入 Code.class.php的验证码的包, 然后使用 关键是session的使用

laravel 开启调试

1、引入package包:

composer require barryvdh/laravel-debugbar

2、在config/app.php的providers中添加一行注册

Barryvdh\Debugbar\ServiceProvider::class,

自动 加载辅助函数

点击查看

#基本功能测试结束!!

开始商城项目的开发

空文件

简介

csjshop code! 展开 收起
PHP
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/gyarmy/csjshop.git
git@gitee.com:gyarmy/csjshop.git
gyarmy
csjshop
Laravel操作测试
master

搜索帮助