微信扫一扫打赏支持

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

 

 

 

 

 

 

二、内容在总结中

 

 

 
posted @ 2019-09-24 13:11  范仁义  阅读(217)  评论(0编辑  收藏  举报