Laravel 开发记录1

phpstrom快捷键:

  • command + E 查看最近打开的文件或项目
  • command + shift + V 选择粘贴最近的剪切板内容
  • command + D 复制粘贴选中的文本
  • command + 1 切换窗口
  • alt + 上下方向键 调到上下函数
  • alt + 左右方向键 导航标签切换
  • command + shift + N 根据文件名查找
  • command + shift + alt + N 根据函数名查找
  • /** + Enter 自动生成注释
  • command + alt + L 格式化代码
  • command + R 替换
  • command + shift + R 全局替换
  • shift + Enter 智能跳到下一行
  • command + shift + U 大小写

表单提交相关

视图引入静态资源文件:

1
<link rel="stylesheet" href="{{asset('resources/views/admin/style/css/ch-ui.admin.css')}}">

控制器分配视图:return view('admin.login');
控制器跳转:return redirect('admin/index');

在使用验证码、QQ登录、七牛存储、支付宝等第三方接口的时候,用到原生session的时候,由于laravel自有session的封装,无办法正常调用
解决方法:在入口文件开启session
session_start();

模板文件调用控制器方法:

1
{{url('admin/code')}}

验证表单是否有数据提交:Input::all() 等价于 ThinkPHP中的 IS_POST
打印并终止程序继续运行:dd(); 等价于 ThinkPHP中的 dump();exit;

csrf防护
报错:
TokenMismatchException in VerifyCsrfToken.php line 67:

解决:

1
{{csrf _ field()}}

登录成功session保存用户信息:session(['user'=>$user]);

数据验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 定义验证规则
$rules = [
'password' => 'required|between:6,20|confirmed',
];
// 提示信息
$message = [
'password.required' => '新密码不能为空',
'password.between' => '新密码必须在6-20位之间',
'password.confirmed'=> '新密码和确认密码不一致',
];
$validator = Validator::make($input,$rules,$message);
if($validator->passes()){//验证规则通过
echo 'ok!';
}else{
$validator->errors()->all();//测试打印错误信息
return back()->withErrors($validator);
}
```

{{csrf_field()}}
@if(count($errors))
@foreach($errors->all() as $error)

@endforeach
@endif


*新密码:

新密码6-20位


*确认密码:

再次输入密码


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

## AJAX实现分类排序
弹出窗插件:`layer.layui.com`
文本编辑器:ueditor
上传组件: `www.uploadify.com`

树形分类(Model)
```php
// 树形分类
public function getTree($data,$field_name,$field_id='id',$field_pid='pid',$pid=0){
$tree = array();
foreach($data as $k => $v){
if($v->$field_pid == $pid){
$tree[] = $data[$k];
$data[$k]['_'.$field_name] = $data[$k][$field_name];
foreach($data as $m => $n){
if($n->$field_pid == $v->$field_id){
$data[$m]['_'.$field_name] = '┣━ '.$data[$m][$field_name];
$tree[] = $data[$m];
}
}
}
}
return $tree;
}

更新分类排序(view)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 <input type="text" onchange="changeOrder(this,{{$v->cate_id}})" name="ord[]" value="{{$v->cate_order}}">
//ajax
<script type="text/javascript">
function changeOrder(obj,cate_id){
var cate_order = $(obj).val();
$.post("{{url('admin/cate/changeorder')}}",{'_token':'{{csrf_token()}}','cate_id':cate_id,'cate_order':cate_order},function(data){
if(data.status == 0){
layer.msg(data.msg,{icon:6});
}else{
layer.msg(data.msg,{icon:5});
}
});
}
</script>

更新分类排序(Controller)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function changeOrder(){
$input = Input::all();
$cate = Category::find($input['cate_id']);
$cate->cate_order = $input['cate_order'];
if($cate->update()){
$data = [
'status' => 0,
'msg' => '分类排序更新成功',
];
}else{
$data = [
'status' => 1,
'msg' => '分类排序更新失败,请稍后重试...',
];
}
return $data;
}

去除不需要的字段:$input = Input::except('_token')
guarded 除了什么字段,其它都是可以填充的:protected $guarded = [];
fillable 可以使用create方法填充的字段

更新分类字段

update 方法使用put方式接受字段
view代码

1
2
<form action="{{url('admin/category'.$cate_info->cate_id)}}" method="post">
<input type="hidden" name="_method" value="put">

刷新页面:location.href = location.href;

图片上传

uploadify插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script src="{{asset('resources/org/uploadify/jquery.uploadify.min.js')}}" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="{{asset('resources/org/uploadify/uploadify.css')}}">
<script type="text/javascript">
<?php $timestamp = time();?>
$(function() {
$('#file_upload').uploadify({
'buttonText' : '图片上传',
'formData' : {
'timestamp' : '<?php echo $timestamp;?>',
'_token' : '{{csrf_token()}}'
},
'swf' : "{{asset('resources/org/uploadify/uploadify.swf')}}",
'uploader' : "{{url('admin/upload')}}",
'onUploadSuccess' : function(file,data,response){
$('input[name=art_thumb]').val(data);
$('#art_thumb_img').attr('src','/'+data);
},
});
});
</script>
<style>
.uploadify{display:inline-block;}
.uploadify-button{border:none; border-radius:5px; margin-top:8px;}
table.add_tab tr td span.uploadify-button-text{color: #FFF; margin:0;}
</style>

<input id="file_upload" name="file_upload" type="file" multiple="true">
<img src="" alt="" id="art_thumb_img" style="max-width: 350px;max-height: 100px;">

图片上传

1
2
3
4
5
6
7
8
9
10
11
12
13
// 图片上传
public function upload(){
$file = Input::file('Filedata');
if($file->isValid()){
// 上传文件的后缀
$entension = $file->getClientOriginalExtension();
// 移动文件并重命名
$newName = date('YmdHis').mt_rand(100,999).'.'.$entension;
$path = $file->move(base_path().'/uploads',$newName);
$filepath = 'uploads/'.$newName;
return $filepath;
}
}

分页

1
2
3
4
5
$data = Article::orderBy('art_id','desc')->paginate(3);
return view('admin.article.list',compact('data'));
<div class="page_list">
{{$data->render()}}
</div>