代码拉取完成,页面将自动刷新
项目是基于Laravel5.6 搭建的一个shop商城
这里是功能介绍
项目的开发过程
2019-07-19 搭建环境
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer create-project laravel/laravel=5.6.* csjshop
修改路由 Route::get('/index',"IndexController@index");
创建控制器 php artisan make:controller IndexController
模拟登陆测试
@CSRF 已完成模拟登陆测试
将项目从虚拟机移动到本机操作
知识点 put提交数据
laravel想使用PUT提交表单,需要在表单中添加: 表单的method为POST方式
首先需要完成后台页面的展示操作
使用布局文件
@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
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");
}
}
主要是为了用户体验设计制作的
//处理上传文件
if ($request->hasFile('photo')) {
$ext = $request->file("photo")->getClientOriginalExtension();
$newFile = time().rand().".".$ext;
$request->file("photo")->move("./Uploads",$newFile);
}else{
return back();
}
存储cookie
Cookie::queue("website","www.gyarmy.com",5);
取出cookie
$site = $request->cookie("website");
@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、查询数据
$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;
}
}
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("更新失败");
}
});
}
路由设置
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的使用
1、引入package包:
composer require barryvdh/laravel-debugbar
2、在config/app.php的providers中添加一行注册
Barryvdh\Debugbar\ServiceProvider::class,
开始商城项目的开发
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。