legend3---lavarel常用操作代码
legend3---lavarel常用操作代码
一、总结
一句话总结:
要自己总结一下常用代码,这样才方便,也才有收获
1、路由示例:Route::get('/login','Home\Login\LoginController@index');?
表示访问地址是login(http://legend3.com/login),控制器是Home\Login\LoginController,方法是index方法
2、控制器中找到视图?
视图位置:resources/views/home/login/index.blade.php
控制器中:return view('home.login.index');
3、控制器中传递参数到页面,页面接收参数?
return view('home.login.index',['time'=>$time]);
title>Legend 3 | 登录{{$time}}</title
public function index(){
//现在时间
$time=date('Y-m-d H:i:s',time());
return view('home.login.index',['time'=>$time]);
}
4、视图中引入静态的js和css?
link rel="stylesheet" href="{{URL::asset('AdminLTE-2.4.15')}}/bower_components/bootstrap/dist/css/bootstrap.min.css"
<!-- Bootstrap 3.3.7 -->
<link rel="stylesheet" href="{{URL::asset('AdminLTE-2.4.15')}}/bower_components/bootstrap/dist/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{URL::asset('AdminLTE-2.4.15')}}/bower_components/font-awesome/css/font-awesome.min.css">
5、表单提交到控制器?
|||-begin
视图:form action="/loginCheck" method="post"
路由:Route::post('/loginCheck',"Home\Login\LoginController@check");
访问时候的浏览器地址:http://legend3.com/loginCheck
|||-end
填路由对应的浏览器地址
6、模型的创建和使用?
模型是定义在app目录下,建议分目录
php artisan创建目录:php artisan make:model Models/Login/Login :前面的Models/Login是目录,最后面那个Login是模型
控制器中引入模型:use App\Models\Login\Login;
第一:(必做)定义一个table属性,值是不要前缀的表名,如果不指定则使用类名的复数形式作为表名。如果模型为Member 模型在不指定table属性的情况下,其默认会去找members表。修饰词:protected
第二:(可选)定义$primarykey属性,值是主键名称,如果需要使AR模式的find方法,则可能需要指定主键(Model:find(n)),在主键字段不是id的时候则需要指定主键。修饰词:
protected
第三:(可选)定义$timestamps 属性,值是false,如果不设置为false,则默认会操作表中的created at和updated at字段,我们表中一般没有这两个字段,所以设置为false,表示不要操作这两个字段。修饰词:public
第四:(可选)定义Sflable 属性,表示使用模型插入数据时,允许插入到数据库的字段信息。修饰词:protected <?php namespace App\Models\Login; use Illuminate\Database\Eloquent\Model; class Login extends Model
{
//定义模型关联的数据表(一个模型只操作一个表)
protected $table='member';
//定义主键(可选)
protected $primarykey='id';
//定义禁止操作时间
public $timestamps= false;
//设置允许写入的数据字段
protected $fillable=['id','name','age','email']; }
7、模型 代码使用实例?
和tp5里面的使用方式是一样的,一般情况推荐使用静态方式:$a=\App\Models\Login\Login::testModel();
控制器
//处理登录操作
public function check(){
$a=\App\Models\Login\Login::testModel();
dd($a);
dd('这是处理登录的控制器');
} 模型
class Login extends Model
{
//定义模型关联的数据表(一个模型只操作一个表)
protected $table='member';
//定义主键(可选)
protected $primarykey='id';
//定义禁止操作时间
public $timestamps= false;
//设置允许写入的数据字段
protected $fillable=['id','name','age','email']; public static function testModel(){
$a=11;
return $a;
} }
8、验证?
$rules数组和$message数组,\Validator::make方法使用这两个数组
// 插入操作 admin/admin post
public function store(Request $request){
// 直接把字符串数组化
parse_str($_POST['str'],$arr);
// 表单验证的规则
$rules=[
'name' => 'required|unique:admin|between:6,12',
'pass' => 'required|same:repass|between:6,12',
];
// 表单验证的提示信息
$message=[
"name.required"=>"请输入用户名",
"pass.required"=>"请输入密码",
"name.unique"=>"用户名已存在",
"pass.same"=>"两次密码不一致",
"pass.between"=>"密码长度不在6-12位之间",
"name.between"=>"用户名长度不在6-12位之间",
];
// 使用laravel的表单验证
$validator = \Validator::make($arr,$rules,$message);
// 开始验证
if ($validator->passes()) {
// 验证通过添加数据库
unset($arr['repass']);
$arr['pass']=\Crypt::encrypt($arr['pass']);
$arr['time']=time();
// 插入数据库
if (\DB::table("admin")->insert($arr)) {
return 1;
}else{
return 0;
}
}else{
// 具体查看laravel的核心类
return $validator->getMessageBag()->getMessages();
}
}
9、接收页面传递过来的参数?
传入$request对象,input方法和all方法都能获取数据
use Illuminate\Http\Request; //处理登录操作
public function check(Request $request){
$phone=$request->input('phone');
$password=$request->input('password');
dd($request->all()); $a=\App\Models\Login\Login::testModel();
dd($a);
dd('这是处理登录的控制器');
}

10、lavare前端的url跳转怎么写?
a href="{{url('/reg')}}}" class="text-center">注册</a:/reg是我们在路由中设置的地址
11、ajax?
和tp5的ajax操作几乎一样
视图js
//获取手机验证码
function get_phone_code(){
console.log('11');
let str=1;
$.post("/phoneCode", {'str':str,'_token':'{{csrf_token()}}'} ,function (data) { });
}
控制器
public function phone_code(Request $request){
dd($request->all());
}
结果
array:2 [
"str" => "1"
"_token" => "DeVbd2nwXrykfxg09sRdX9L1xNpsuzDfBIGtQXrb"
]
12、带操作情况的ajax?
返回$back_data过去,根据操作码弹出错误类型
也可以考虑用operate_message把操作提示信息从服务器带到客户端
控制器
//获取手机验证码操作
public function phone_code(Request $request){
$back_data=[];
$back_data['operation_num']=0;//表示连接失败
//dd($request->all());
$phone_num=$request->input('u_phone');
$captcha=$request->input('captcha');
//1、判断字符验证码是否正确,正确的话才发送手机验证码
$regcaptcha=session('regcaptcha');
$request->session()->reflash();
$captcha=strtolower($captcha);if($captcha!=strtolower($regcaptcha)){
//验证码错误
$back_data['operation_num']=11;//表示验证码错误
return $back_data;
}else{
$back_data['operation_num']=2;//表示手机验证码发送成功
}
return $back_data;
}
视图
//获取手机验证码
function get_phone_code(){
let u_phone=$('#u_phone').val();
let captcha=$('#captcha').val();
$.post("/phoneCode", {'u_phone':u_phone,'captcha':captcha,'_token':'{{csrf_token()}}'} ,function (data) {
console.log(data);
if(parseInt(data.operation_num)==2){
alert('短信发送成功');
}else{
if(parseInt(data.operation_num)==0) alert('连接失败');
if(parseInt(data.operation_num)==11) alert('验证码错误');
if(parseInt(data.operation_num)==12) alert('短信验证码发送错误');
}
});
}
13、闪存相关使用?
reflash方法用于验证出错保存信息,forget方法用于验证成功删除数据
$request->session()->flash('regcaptcha', $phrase); //存储验证码
$request->session()->reflash();如果你需要在更多的请求中使用到该一次性数据,你可以使用 reflash 方法,该方法会将所有一次性请求保留到下一次请求。
$request->session()->forget('key');forget 方法会从 Session 中删除指定数据
14、layer.js中好用的message框?
用来替代alert是极佳的
function layer_alert_5(str){
layer.msg(str, {
anim: 6,
time: 3000
},function(){
//关闭后的操作
});
}
使用
layer_alert_5('短信发送成功!');
15、验证?
$validator = \Validator::make($dataIn,$rules,$message);
if ($validator->passes()) {
//步骤一:验证输入的数据
$rules=[
'u_phone' => 'required|unique:user|between:10,15',
'u_password' => 'required|same:u_re_password|between:6,20',
'u_email' => 'required|email',
];
$message=[
"u_phone.required"=>"请输入大陆手机号",
"u_phone.unique"=>"用户名已存在",
"u_phone.between"=>"手机号码位数不对",
"u_password.required"=>"请输入密码",
"u_password.same"=>"两次密码不一致",
"u_password.between"=>"密码长度不在6-20位之间",
"u_email.required"=>"请输入邮箱",
];
$validator = \Validator::make($dataIn,$rules,$message);
if ($validator->passes()) {
unset($dataIn['_token']);
unset($dataIn['u_re_password']);
unset($dataIn['captcha']);
unset($dataIn['phone_code']);
$dataIn['u_password']=\Crypt::encrypt($dataIn['u_password']);
$dataIn['u_create_at']=time();
$dataIn['u_update_at']=time();
if (\DB::table("user")->insert($dataIn)) {
return 1;
}else{
return 0;
}
}else{
// 具体查看laravel的核心类
return $validator->getMessageBag()->getMessages();
}
16、post提交返回错误信息?
控制器:return back()->withInput()->with('error','验证码错误!');
视图:{{session('error')}}
控制器:with向视图传递信息
return back()->withInput()->with('error','验证码错误!'); 视图:用session获取信息
@if(session('error'))
<div class="alert alert-danger">{{session('error')}}</div>
@endif
二、内容在总结中
legend3---lavarel常用操作代码的更多相关文章
- legend3---lavarel常用操作代码2
legend3---lavarel常用操作代码2 一.总结 一句话总结: 对于王思cong被执法人的感悟:失意时 莫心伤,得意时 莫膨胀 1.lavarel自动事务? DB::transaction方 ...
- legend3---Homestead常用操作代码
legend3---Homestead常用操作代码 一.总结 一句话总结: 在虚拟机里面改变文件windows里面也会变,在windows里面改变虚拟机里面也会变,所以可以在windows里面编程或者 ...
- 二叉树的python可视化和常用操作代码
二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...
- c++ MFC图像处理CImage类常用操作代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9598974.html MFC图像处理CImage类常用操作 CImage类头文件为#inclu ...
- js常用操作代码
页面前进后退<input type=button value=刷新 onclick="window.location.reload()"><input type= ...
- (转载)StringGrid常用属性和常用操作
Delphi StringGrid常用属性和常用操作 StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控 ...
- (转载)Delphi StringGrid常用属性和常用操作
Delphi StringGrid常用属性和常用操作 StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控 ...
- Delphi StringGrid常用属性和常用操作
StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事 ...
- git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...
git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...
随机推荐
- 链式栈的C++实现
这是去年的内容,之前放在github的一个被遗忘的reporsity里面,今天看到了就拿出来 #include<iostream> #include<string> using ...
- oppo 手机不能连接appium,提示does not have permission android.permission.CLEAR_APP_USER_DATA to clear data
1)增加配置项noReset=true 2)除了常见开发者选项中打开usb调试,同时还需要开启以下2项,然后重启手机即可
- 关于不同retina的布局
不同retina,显示高度不一样,很显然最细的线条最美 <!DOCTYPE html> <html lang="en"> <head> < ...
- vue开大主要难点解决方式
问题:在我们那vue开发项目时,多层嵌套组件最繁琐,组件传参成最难的问题,并且对兄弟组件传参也无能为力,也会导致代码很难维护. 解决:采用vuex状态管理,把所有的事件和状态都储存在store对象中, ...
- redis一键部署脚本
1.新建一个名为 auto_install_redis.sh的文件 2.将下面脚本拷贝到文件中,具体步骤在注释里面 #环境 linux #一键安装redis,在linux环境中使用脚本运行该文件(sh ...
- win 10.0.17134.915 版本无法更新处理方法
用CMD(以管理员方式运行)分别运行:1. Dism /Online /Cleanup-Image /RestoreHealth2. sfc /scannow 注意:第2步比较慢,有进度条,请耐心 ...
- uestc summer training #4 牛客第一场
A dp[i][j][k]可以n3地做 但是正解是找把问题转化为一个两点不相交路径 最终答案为C(n+m, n)2-C(n+m, m-1)C(n+m,n-1) B 把题目的矩阵看成无向图的邻接矩阵 这 ...
- redis的数据类型和基本操作
Redis 的Key Redis 的 key 是字符串类型,但是 key 中不能包括边界字符,由于 key 不是 binary safe的字符串,所以像"my key"和" ...
- Kattis - bitwise Bitwise (RMQ+尺取+树上dfs)
题意:有一个长度为n的序列,让你把它分成k段,段内元素取or,段间取and,求能够得到的最大值. 这个算法是我和xz场上yy出来的,然而时间不够了没写出来,而且时间复杂度是$O(nlogn+nlogA ...
- noi.ac NA534 【猫】
一眼暴力DP 再一眼决策单调性? 打个表以为是四边形不等式?? 最后发现是斜率优化??? 于是成功写了个假斜率优化真四边形不等式拿了\(80\) 设\(f[i][j]\)表示有\(i\)个工作人员出发 ...