ThinkPHP5.1 小計

wxvirus發表於2019-08-15

ThinkPHP5 模型時間戳設定

單獨在模型裡面設定(推薦)

protected $autoWriteTimestamp = true;       // int 型
protected $autoWriteTimestamp = 'datetime';   // datetime 型別
protected $autoWriteTimestamp = false;     // 關閉自動寫入時間戳
protected $updateTime = false;       // 只關閉自動寫入update_time欄位

在config裡新增全域性設定

/ 開啟自動寫入時間戳欄位(官方手冊這麼說,自己並沒有測試出來)
'auto_timestamp' => true,     // 預設為int型
'auto_timestamp' => 'datetime',    // datetime類

'auto_timestamp' => false,  // 關閉全域性自動寫入時間欄位

如果資料表欄位不是預設值(假設資料庫欄位名為create_at和update_at)

// 定義時間戳欄位名
protected $createTime = 'create_at';    // 預設的欄位為create_time 和 update_time
protected $updateTime = 'update_at';

ThinkPHP5.1中使用模板繼承

首先將一個滿的html頁面複製到view/public/base.html中,接著將頭部(__header),導航欄(__nav),左側選單欄(__left),底部(__footer),js(__js)都分離到單獨的html

base.html中使用{include file="public/__header" /}這樣的方式進行引入頭部,其他部分都照這個例子進行引入

找到base.html中屬於右側內容部分的用block進行包裹起來

{block name="content"}
內容
{/block}

block將公共可改部分進行包裹,後面用於繼承的時候,可以換成自己想寫的內容用於替換。

之後其他的頁面的使用方法:

{extend name="public/base" /}

...其他block

{block name="content"}
主要內容區域
{/block}

如果不需要改動block中原有的內容:可以不寫出那個block,或者加入{__block__},它表示原有程式碼。

案例:

{block name="content"}
{__block__}
{/block}

下載驗證碼外掛

這是配合ThinkPHP 5.1版本的

composer require topthink/think captcha=2.0.*

Login控制器裡新增verify()方法用於驗證碼

public function verify()
    {
        $config = [
            // 驗證碼字型大小
            'fontSize' => 16,
            'length'   => 3,
            // 關閉驗證碼雜點
            'useNoise' => false,
            'useCurve' => false,
        ];
        $captcha = new Captcha($config);
        return $captcha->entry();
    }

html頁面中引入

<img src="{:url('Login/verify')}" class="reloadverify">

點選驗證碼圖片隨機變換的JS,挺不錯的點選切換方法

<script>
    $(function () {
        var verifyimg = $(".reloadverify").attr("src");
        $(".reloadverify").click(function () {
            if (verifyimg.indexOf('?') > 0) {
                $(".reloadverify").attr("src", verifyimg + '&random=' + Math.random());
            } else {
                $(".reloadverify").attr("src", verifyimg.replace(/\?.*$/, '') + '?' + Math.random());
            }
        });
    });
</script>

這裡的reloadverify必須要在img中進行定義class

ThinkPHP5配合小程式實現跨域

在router.php開頭直接加入
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: POST,GET');
if(request()->isOptions()){
exit();
}

在基類中的初始化方法理進行寫入跨域程式碼

tp5.0
/**
     * 初始化方法
     */
    protected function _initialize()
    {
        parent::_initialize();

        // 處理跨域
        //允許的源域名
        header("Access-Control-Allow-Origin: *");
        //允許的請求頭資訊
        header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
        //允許的請求型別
        header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH')
    }
tp5.1  initialize()沒有前下劃線

在入口檔案進行處理

public/index.php

// 處理跨域預檢請求
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    // 允許的源域名
    header("Access-Control-Allow-Origin: *");
    // 允許的請求頭資訊
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
    //允許的請求型別
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
    exit;
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
Virus

相關文章