legend3---lavarel經常使用操做代碼

legend3---lavarel經常使用操做代碼

1、總結

一句話總結:

要本身總結一下經常使用代碼,這樣才方便,也纔有收穫

 

一、路由示例:Route::get('/login','Home\Login\LoginController@index');?

表示訪問地址是login(http://legend3.com/login),控制器是Home\Login\LoginController,方法是index方法

 

二、控制器中找到視圖?

視圖位置:resources/views/home/login/index.blade.php
控制器中:return view('home.login.index');

 

三、控制器中傳遞參數到頁面,頁面接收參數?

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]);
}

 

 

 

四、視圖中引入靜態的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">

 

 

五、表單提交到控制器?

|||-beginphp

視圖:form action="/loginCheck" method="post"
路由:Route::post('/loginCheck',"Home\Login\LoginController@check");
訪問時候的瀏覽器地址:http://legend3.com/loginCheck

|||-endcss

填路由對應的瀏覽器地址

 

六、模型的建立和使用?

模型是定義在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'];
    
}

 

七、模型 代碼使用實例?

和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;
    }

}

 

 

八、驗證?

$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();
    }

}

 

 

九、接收頁面傳遞過來的參數?

傳入$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('這是處理登陸的控制器');
    }

 

十、lavare前端的url跳轉怎麼寫?

a href="{{url('/reg')}}}" class="text-center">註冊</a:/reg是咱們在路由中設置的地址

 

十一、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"
]

 

十二、帶操做狀況的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');
        //一、判斷字符驗證碼是否正確,正確的話才發送手機驗證碼
        $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('短信驗證碼發送錯誤');
            }
        });
    }

 

 

1三、閃存相關使用?

reflash方法用於驗證出錯保存信息,forget方法用於驗證成功刪除數據

$request->session()->flash('regcaptcha', $phrase); //存儲驗證碼
$request->session()->reflash();若是你須要在更多的請求中使用到該一次性數據,你能夠使用 reflash 方法,該方法會將全部一次性請求保留到下一次請求。
$request->session()->forget('key');forget 方法會從 Session 中刪除指定數據前端

 

1四、layer.js中好用的message框?

用來替代alert是極佳的
function layer_alert_5(str){
    layer.msg(str, {
        anim: 6,
        time: 3000
    },function(){
        //關閉後的操做
    });
}

使用
layer_alert_5('短信發送成功!');

 

1五、驗證?

$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();
  }

 

 

1六、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

 

 

 

 

 

 

2、內容在總結中

相關文章
相關標籤/搜索