国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP_Laravel

NoraXie / 842人閱讀

摘要:簡介是一套簡介,優雅開發框架,通過簡單,高雅,表達式語法開發應用。服務器需要有該目錄及所有子目錄的寫入權限可用于存儲應用程序所需的一些文件該目錄下包括緩存和編譯后的視圖文件日志目錄測試目錄該目錄下包含源代碼和第三方依賴包環境配置文件。

簡介

Laravel是一套簡介,優雅PHP Web開發框架(PHP Web Framework), 通過簡單,高雅,表達式語法開發Web應用。

特點:

語言優美

用戶體驗好

Composer

使用Composer安裝Laravel

Composer中文鏡像

修改composer的全局配置文件

> composer config -g repo.packagist composer https://packagist.phpcomposer.com

創建一個Laravel項目

> composer create-project laravel/laravel --prefer-dist
> composer create-project laravel/laravel blog --prefer-dist

--prefer-dist 下載壓縮版本.
blog別名

初始化配置

PHP版本>=5.5.9

開啟rewrite和vhost

httpd.conf  // 配置虛擬目錄

開啟PHP擴展

extension=php_openssl.dll
extension=php_mbstring.dll
extension=php_pdo_mysql.dll

配置偽靜態.htaccess, 和 入口文件放在同級目錄

Laravel參考文檔5.1
Laravel參考文檔5.2

Laravel目錄結構

Laravel目錄結構

目錄或文件 說明
app 包含Controller、Model、路由等在內的應用目錄,大部分業務將在該目錄下進行
– Events 事件目錄
– Exceptions 包含了自定義錯誤和異常處理類
– Http HTTP傳輸層相關的類目錄
– – Controllers 控制器目錄
– – Middleware 中間件目錄
– – Requests 請求類目錄
– – Kernel.php 包含http中間件和路由中間件的內核文件
– – routes.php 強大的路由
– Jobs 該目錄下包含隊列的任務類
– Listeners 監聽器目錄
– Providers 服務提供者目錄
– User.php 自帶的模型實例,新建的Model默認也存儲在該目錄
bootstrap 框架啟動載入目錄
– cache 存放框架啟動緩存,web服務器需要有該目錄的寫入權限
config 各種配置文件的目錄
- app.php 系統級配置文件
– auth.php 用戶身份認證配置文件,指定好table和model可以很方便地用身份認證功能
– broadcasting.php 事件廣播配置文件
– cache.php 緩存配置文件
– compile.php 編譯額外文件和類需要的配置文件,一般用戶很少用到
– database.php 數據庫配置文件
– filesystems.php 文件系統配置文件,這里可以配置云存儲參數
– mail.php 電子郵件配置文件
– queue.php 消息隊列配置文件
– services.php 可存放第三方服務的配置信息
– session.php 配置session的存儲方式、生命周期等信息
– view.php 模板文件配置文件,包含模板目錄和編譯目錄等
database 數據庫相關目錄
public 網站入口,應當將ip或域名指向該目錄而不是根目錄。可供外部訪問的css、js和圖片等資源皆放置于此目錄
- .htaccess Apache服務器用該文件重寫URL
– web.config IIS服務器用該文件重寫URL
resources 資源文件目錄
– assets 可存放包含LESS、SASS、CoffeeScript在內的原始資源文件
– lang 本地化文件目錄
– views 視圖文件
storage 存儲目錄。web服務器需要有該目錄及所有子目錄的寫入權限
– app 可用于存儲應用程序所需的一些文件
– framework 該目錄下包括緩存、sessions和編譯后的視圖文件
– logs 日志目錄
tests 測試目錄
vendor 該目錄下包含Laravel源代碼和第三方依賴包
.env 環境配置文件。config目錄下的配置文件會使用該文件里面的參數,不同生產環境使用不同的.env文件即可
artisan 強大的命令行接口,可以在app/Console/Commands下編寫自定義命令
composer.json 存放依賴關系的文件
composer.lock 鎖文件,存放安裝時依賴包的真實版本
gulpfile.js gulp 配置文件
package.json
phpspec.yml phpspec(一種PHP測試框架)配置文件
phpunit.xml phpunit(一種PHP測試框架)配置文件
server.php PHP內置的Web服務器將把這個文件作為入口。以public/index.php為入口的可以忽略掉該文件

composer.json配置

{    
    "name": "laravel/laravel",    //項目名稱
    "description": "The Laravel Framework.",    //描述
    "keywords": ["framework", "laravel"],    //關鍵詞
    "license": "MIT",    //許可協議
    "type": "project",    //類型
    "require": {    
        "php": ">=5.5.9",    //PHP版本
        "laravel/framework": "5.2.*"    //框架版本
    },    
    "require-dev": {    //依賴包
        "fzaninotto/faker": "~1.4",    
        "mockery/mockery": "0.9.*",    
        "phpunit/phpunit": "~4.0",    
        "symfony/css-selector": "2.8.*|3.0.*",    
        "symfony/dom-crawler": "2.8.*|3.0.*"    
    },    
    "autoload": {    //自動加載
        "classmap": [    
            "database"    
        ],    
        "psr-4": {    //一種自動加載的規范
            "App": "app/"    
        }    
    },    
    "autoload-dev": {    //加載測試
        "classmap": [    
            "tests/TestCase.php"    
        ]    
    },    
    "scripts": {    //執行腳本
        "post-root-package-install": [    
            "php -r "copy(".env.example", ".env");""    
        ],    
        "post-create-project-cmd": [    
            "php artisan key:generate"    
        ],    
        "post-install-cmd": [    
            "php artisan clear-compiled",    
            "php artisan optimize"    
        ],    
        "post-update-cmd": [    
            "php artisan clear-compiled",    
            "php artisan optimize"    
        ]    
    },    
    "config": {    //配置項
        "preferred-install": "dist"    //優先安裝壓縮版
    },    
    "repositories": {    //配置composer鏡像
        "packagist": {    
            "type": "composer",    
            "url": "https://packagist.phpcomposer.com"    
        }    
    }    
}    
HTTP 基礎路由

基礎路由

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
Route::match(["get", "post"], "/test", $callback); // 匹配各種HTTP請求
Route::any("foo", $callback); // 任何請求匹配

字體:

controller

Route::controller("index", "IndexController");

class IndexController extends Controller {
    public function getIndex() {
        return "Index"; 
    }
}

路由參數

必選參數

一個參數和多個參數的情況
語法:{字段}

Route::get("user/{id}", function($id) {
    echo $id;
});

Route::get("user/{id}/age/{num}", function($id, $num) {
    echo "id: " . $id . " num: " . $num;
});

可選參數

語法:

{字段?}

匿名函數參數定義初值

Route::get("user/{name?}", function ($name = null) {
    echo $name;
});

多個參數下,最后一個參數可以可選。

參數約束

正則約束: 主要做類型限制.
語法:
增加where()方法條件.

Route::get("user/{name}", function ($name) {
    //
})->where("name", "[A-Za-z]+");

Route::get("user/{id}", function ($id) {
    //
})->where("id", "[0-9]+");

Route::get("user/{id}/{name}", function ($id, $name) {
    //
})->where(["id" => "[0-9]+", "name" => "[a-z]+"]);

高級路由

http普通路由(獲取路由地址)
調用:route(profile)

Route::get("user1", ["as" => "profile", function() {
    var_dump(route("profile")); // 路由地址  // http://www.lara.com/user1
}]);

http控制器路由(在控制器中獲取路由地址)

Route::get("user", [
    "as" => "profile", "uses" => "UserController@index"
]); 

路由分組

把類似功能的路由分組,便于管理維護。

// Route::get("admin/login", "AdminIndexController@login");
// Route::get("admin/index", "AdminIndexController@index");

// 提取 分組admin 和命名空間 
Route::group(["prefix" => "admin", "namespace" => "Admin"], function () {
    Route::get("login", "IndexController@login");
        Route::get("index", "IndexController@index");
});
控制器

基礎控制器

固定模板
需要命名空間,
命名空間作用:告知自動加載機制,怎樣索引到當前目錄文件.


創建控制器:

所有的控制器方法,都需要在路由中做配置.

Route::get("controller", "IndexController@index");  // 控制器文件名@控制器方法名

使用Artisan方式創建控制器:

> php artisan make:controller UserController 

使用Artisan查看路由列表:

> php artisan route:list

RESTful 資源控制器

一次性可以配置一堆相同類似的路由。
語法:Route::resource("article", "ArticleController@index");

$ php artisan route:list
+--------+-----------+------------------------------+-----------------------+------------------------------------------------------------+------------+
| Domain | Method    | URI                          | Name                  |Action                                                      | Middleware |
+--------+-----------+------------------------------+-----------------------+-----------------------------------------------------------+------------+
|        | GET|HEAD  | /                            |                       | Closure                                                    |            |
|        | POST      | admin/article                | admin.article.store   | AppHttpControllersAdminArticleController@index@store   |            |
|        | GET|HEAD  | admin/article                | admin.article.index   | AppHttpControllersAdminArticleController@index@index   |            |
|        | GET|HEAD  | admin/article/create         | admin.article.create  | AppHttpControllersAdminArticleController@index@create  |            |
|        | DELETE    | admin/article/{article}      | admin.article.destroy | AppHttpControllersAdminArticleController@index@destroy |            |
|        | PUT|PATCH | admin/article/{article}      | admin.article.update  | AppHttpControllersAdminArticleController@index@update  |            |
|        | GET|HEAD  | admin/article/{article}      | admin.article.show    | AppHttpControllersAdminArticleController@index@show    |            |
|        | GET|HEAD  | admin/article/{article}/edit | admin.article.edit    | AppHttpControllersAdminArticleController@index@edit    |            |
+--------+-----------+------------------------------+-----------------------+-----------------------------------------------------------+------------+
中間件

中間件的理解:在路由上層加了一層保護過濾

web中間件

web中間件模板:

Route::group(["middleware" => ["web"]], function () {
    //
});

使用web中間件,才能使用Session服務和Csrf服務的保護

Route::group(["middleware" => "web"], function() {
        Route::get("/", function () {
                session(["key" => 11]);
            return view("welcome");
        });
        
        Route::get("test", function() {
            var_dump(session("key"));
            return "test";
        });
});

自定義中間件

Kernel.php文件中修改 $routeMiddleware 配置

protected $routeMiddleware = [
  "auth" => AppHttpMiddlewareAuthenticate::class,
  "auth.basic" => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
  "guest" => AppHttpMiddlewareRedirectIfAuthenticated::class,
  "throttle" => IlluminateRoutingMiddlewareThrottleRequests::class,
  "admin.login" => AppHttpMiddlewareAdminLogin::class // 增加自定義中間件
];

使用自定義中間件

Route::group(["middleware" => "admin.login"], function () {
});

artisan 方式創建中間件

> php artisan make:middleware AdminLogin

CSRF必須要使用中間件調用.

視圖

視圖:處理結果的可視化

渲染視圖:
語法:view(視圖路徑)

public function login() {
    return view("admin/login");
}

數據傳遞:

with

傳參

compact

with()

傳入:

public function login() {
    $name = "NAME";
    return view("admincolor")->with("name", $name);
}

public function login() {
    $data = [
        "name" => "NAME",
        "age" => 24
    ];
    return view("admincolor")->with("data", $data);
}

顯示:

傳參

return view("admincolor", ["name" => "NAME"]);

return view("admincolor", $data);

compact()

return view("admincolor", compact("title"));
Blade 基礎用法

顯示變量

{{$title}}

屏蔽{{}}
語法:@{{字段}}

@{{$title}}

解析HTML標簽

{!!$title!!}
流程控制

if

使用@if,@elseif, @else , @endif

@if ($data["age"] > 20) {{$data["name"]}} @else no @endif

unless

除非if取反

@unless ($data["age"] > 20) {{$data["name"]}} @endunless

for

@for ($i=0; $i<5; $i++) {{$i}} @endfor

foreach

@foreach ($data["article"] as $v)
    
{{$v}}
@endforeach
子視圖

include

引入子視圖


    
        
    
    
        @include("admin.public.header")
        
中間
@include("admin.public.footer")

傳入參數

@include("admin.public.header", ["page" => "index"])

yield & exnteds

占位視圖


    
        
    
    
        
        
header
@yield("content")
footer

利用extends,使用占位視圖.

@extends("admin.layouts.index")

@section("content")
替換內容
@endsection()

在主模板定義內容,父模板引用.
主模板:
語法:

@section("name")
    // conent
@show


    
        
    
    
        
        
header
@yield("content") @section("module")
主模板
@show
footer

子模板使用:需要在section范圍中使用

@extends("admin.layouts.index")

@section("content")
替換內容
@parent @endsection()
讀取配置項

.ENV文件及配置項讀取

.env配置項:

APP_ENV=local // 運行環境
APP_DEBUG=true // 調試模式
APP_KEY=iCfdjsHjdgoBp5HS9JmDNWyR1CCSmsu3  // 項目安全配置項的密>鑰  // php artisan key:generate
APP_URL=http://localhost // 項目根目錄

// 數據庫配置項
DB_HOST=127.0.0.1  // 服務器地址
DB_PORT=3306 // 服務器端口
DB_DATABASE=homestead // 數據庫
DB_USERNAME=homestead // 用戶名
DB_PASSWORD=secret // 密碼

// 驅動設置
CACHE_DRIVER=file  // 緩存驅動
SESSION_DRIVER=file // session驅動
QUEUE_DRIVER=sync // 隊列模式

// redis 配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

// mail 郵件配置
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

config/app.php
讀取使用.env文件

return [
    "debug" => env("APP_DEBUG", false) // 如果`.env`文件中沒有配置APP_DEBUG就使用默認值false
]

控制器中讀取配置項

public function view() {
    var_dump(config("app.debug"));
    var_dump(config("app.timezone"));
    var_dump(config("database.connections.mysql.port"));
    echo IlluminateSupportFacadesConfig::get("webConf.web_title"); 
}
數據庫 數據庫連接

需要引入DB類

use IlluminateSupportFacadesDB;

測試是否連接成功數據庫

$pdo = DB::connection()->getPdo();
dd($pdo);
查詢數據
$users = DB::table("user")->get();
$user = DB::table("user")->where("user_id", 1)->get();
$user = DB::table("user")->where("user_id", ">", 2)->get();
Eloquent ORM

模型操作數據庫
每張數據表都對應一個與該表進行交互的“模型”,模型允許在表中進行數據查詢,以及插入、更新、刪除等操作.

創建模型

> php artisan make:model Http/Model/User

查詢數據
需要引入User模型

use AppHttpModelUser;

$user = User::where("user_id", 1)->get();

laravel在更新和修改數據的時候,都會增加一個字段update_at或者create_at.表示能夠記的更新記錄的時間。

解決方法:

在數據庫中增加update_at或者create_at

在模型中禁止laravel管理數據的方式:public $timestamps = false; // 默認的時間戳禁止

設置數據表名,設置表的主鍵


find()

查詢數據&更新數據

$user = User::find(2); // 查詢數據
dd($user); 

$user->user_name = "color"; // 更新數據
$user->update();
后臺功能

驗證碼

laravel沒有開啟原生的php的session, 需要在入口文件中開啟session.

引入類,路徑問題,需要到基類中尋找 new Code();

/**
 * 后臺登陸驗證碼
 */
public function code() {
    $code = new Code();
    echo $code->make();
}

Input服務
Input::all() 獲取表單數據

CSRF認證

在提交過程中需要前臺傳入csrf驗證token值字段:{{csrf_field()}}

源碼中顯示:

Crypt加密和解密
雖然加密過程中一直變化數據,但是有一次結果抓取住就可以解密。
Crypt::encrypt(); Crypt加密
Crypt::decrypt(); Crypt解密

判斷登陸邏輯:

/**
* 登陸狀態
*/
public function login() {
if ($input = Input::all()) {
    // 判斷驗證碼
      if (strtoupper($input["code"]) != strtoupper($this->getCode())) {
          return back()->with("msg", "驗證碼錯誤!");
      }
      // 用戶名和密碼
      if (!$input["user_name"] && !$input["user_pass"]) {
          return back()->with("msg", "用戶名或密碼不能為空!");
      } else {
          // 存在用戶名和密碼
          // DB::table("user")->where("user_id", $input["user_name"])
          $user = User::first();
          if ($user->user_name != $input["user_name"] || Crypt::decrypt($user->user_pass) != $input["user_pass"]) {
                        return back()->with("msg", "用戶名或密碼不正確!");
          } 
          
                    // 登陸信息寫入session中.
                    session(["users" => $user]);
                    
                    // 跳轉后臺首頁
                    return redirect("admin/index");
      }

  } else {
      return view("admin.login");
  }

}

后臺首頁、歡迎頁面修改及子視圖布局

Laravel5.2中PHP獲取服務器操作系統等信息:
PHP程式版本:
zend版本:
mysql支持
服務器操作系統:
服務端信息:
最大上傳限制:
最大執行時間:
腳本運行占用最大內存:
獲得服務器系統時間: date_default_timezone_set(PRC); echo date("Y-m-d G:i:s");
查詢當前連接的MYSQL數據庫的版本php原生函數mysql_get_server_info();

管理員登陸中間件設置和注銷登陸

利用中間件驗證登錄信息.

注冊中間件:app/Htpp/Kernel.php

protected $routeMiddleware = [ ];

利用session判斷頁面是否可以進入.

public function handle($request, Closure $next) {
    
    // 判斷session中的登陸信息
    if (!session("users")) {
        return redirect("admin/login");
    }
  return $next($request);
}

密碼修改及Validation驗證

Validator服務
引入use IlluminateSupportFacadesValidator;
Validator::make();

表單驗證

public function pass() {
    if ($input = Input::all()) {

        // 驗證規則
        $rules = [
            "password" => "required|between:5,20|confirmed",
        ];

        // 提示信息
        $msg = [
            "password.required" => "新密碼不能為空",
            "password.between" => "新密碼必須在5-20位之間",
            "password.confirmed" => "新密碼和確認密碼不一致"
        ];

        $validator = Validator::make($input, $rules, $msg);
        if ($validator->passes()) {
            // 對比原密碼
        $user = User::first();
            $_password = Crypt::decrypt($user->user_pass);
        
        // 判斷輸入的 原始密碼和 數據庫存儲的密碼
        if ($input["password_o"] != $_password) {
            return back()->with("msg", "原密碼輸入錯誤");        
        }
        
        // 密碼修改
        $user->user_pass = $_password = Crypt::encrypt($input["password"]);
        $user->update();
        return back()->with("msg", "密碼修改成功");
        } else {
//                dd($validator->errors()->all());
            return back()->withErrors($validator);
        }
    } else {
        return view("admin.pass");
    }
}

Category

文章分類表的創建

創建表

DROP TABLE IF EXISTS `b_category`;

CREATE TABLE `b_category` (
  `cate_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主鍵",
  `cate_name` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT "" COMMENT "分類名稱",
  `cate_title` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT "" COMMENT "文字說明",
  `cate_keywords` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT "" COMMENT "關鍵詞",
  `cate_description` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT "" COMMENT "描述",
  `cate_view` int(10) NOT NULL DEFAULT "0" COMMENT "查看次數",
  `cate_orer` tinyint(4) NOT NULL DEFAULT "0" COMMENT "排序",
  `cate_pid` int(11) DEFAULT "0" COMMENT "父級id",
  PRIMARY KEY (`cate_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="文章分類";

后臺文章分類頁多級分類列表

/**
 * 家譜樹
 * @param {Object} $data 傳入所有數據
 * @param {String} $field_name  字符串 
 * @param {String} $field_id  cate_id 字段 
 * @param {String} $field_pid  cate_pid 字段  
 * @param {Int} $pid 頂級分類id
 * @return {Array} 相聯系的數據
 */
public function getTree($data, $field_name = "-- ", $field_id = "cate_id", $field_pid = "cate_pid", $pid = 0) {
    
    // 存放處理后數據
    $arr = array();
    
    /**
     * 1. 遍歷 pid為0 (頂級目錄) , 壓入數組
     * 
     * 2. pid 不為0 的,對比pid,壓入數組后續中. 
     */
    
    foreach($data as $k => $v) {
        if ($v[$field_pid] == $pid) {
            $arr[] = $data[$k];
            foreach($data as $m => $n) {
                // 對比 $v[cate_id] 和 $data[cate_pid] 對比
                if ( $n[$field_pid] == $v[$field_id] ) {
                    $data[$m]["_cate_name"] = $field_name; 
                    $arr[] = $data[$m];                        
                }
            }
        }
    }
    return $arr;
}    

Ajax異步修改分類排序
注意需要token字段.


表單數據收集

$input = Input::except("_token"); // 不需要使用某些方法

$input = Input::all();

$input = Input::get("type"); // 獲取某個字段

$input = Input::file("Filedata"); // 獲取文件中的信息

參數中表單收集數據

public function store(Request $request) {
    // 接收表單數據
    $input = $requset->all();

}

過濾入庫數據
在模型中增加屬性

protected $guarded = []; // 當前有那些不需要寫入數據庫. // 開啟黑名單
protected $fillable = ["cate_id"]; // 開啟白名單

form提交put數據
form利用hidden隱藏域

put接收數據

/**
 * put admin/category/{category} 更新分類
 */
public function update($cate_id) {
    $input = Input::except("_token", "_method");
    $res = Category::where("cate_id", $cate_id)->update($input);
    
    if (!$res) {
        // 更新數據失敗
        return back()->with("errors", "添加失敗");                
    } else {
        // 更新數據成功
        return redirect("admin/category");
    }
    
}

異步ajax提交delete刪除數據

// 異步刪除數據
$.ajax({
    url: "{{url("admin/category")}}" + "/" +$cate_id,
    type: "post",
    data: {
        _token: "{{csrf_token()}}",
        _method: "delete"    
    },
    success: function(data) {
        console.log(data);
    }
});

后臺接收delete數據

/**
 * delete admin/category/{category} 刪除單個分類
 */
public function destroy($cate_id) {
    $res = Category::where("cate_id", $cate_id)->delete();

    // 處理頂級分類
    Category::where("cate_pid", $cate_id)->update(["cate_pid" => 0]);

if (!$res) {
    // 刪除失敗
    $data = [
        "status" => 0,
        "msg" => "分類刪除失敗"
    ];
    return json_encode($data);
} else {
    // 刪除成功
    $data = [
        "status" => 1,
        "msg" => "分類刪除成功"
        ];
        return json_encode($data);
    }
}

頂級分類刪除處理方式:

頂級分類需要看是否有下級分類,沒有刪除,有提示不允許刪除

刪除頂級分類,把頂級分類x下一級子分類都調整為頂級分類.

// 處理頂級分類
Category::where("cate_pid", $cate_id)->update(["cate_pid" => 0]);

創建文章表

create table b_article (
    art_id int primary key auto_increment,
    art_title varchar(100) default "" not null  comment "標題",
    art_tags varchar(10)  default "" not null comment "標簽",
    art_keywords varchar(100) not null default "" comment "關鍵詞",
    art_description varchar(255) not null default "" comment "描述",
    art_thumb varchar(255) not null default "" comment "縮略圖",
    art_content text not null default "" comment "文章內容",
    art_time int(11) not null default 0 comment "發布時間",
    art_editor varchar(50) not null default "" comment "發布作者",
    art_view int(11) not null default 0 comment "查看次數"
) engine myisam charset utf8;

Article

文章分類資源路由

$ php artisan route:list
+--------+--------------------------------+--------------------------------+------------------------+-----------------------------------------------------------+-----------------+
| Domain | Method                         | URI                            | Name                   | Action                                                    | Middleware      |
+--------+--------------------------------+--------------------------------+------------------------+-----------------------------------------------------------+-----------------+
|        | GET|HEAD                       | /                              |                        | AppHttpControllersIndexController@index                |                 |
|        | POST                           | admin/article                  | admin.article.store    | AppHttpControllersAdminArticleController@store        | web,admin.login |
|        | GET|HEAD                       | admin/article                  | admin.article.index    | AppHttpControllersAdminArticleController@index        | web,admin.login |
|        | GET|HEAD                       | admin/article/create           | admin.article.create   | AppHttpControllersAdminArticleController@create       | web,admin.login |
|        | GET|HEAD                       | admin/article/{article}        | admin.article.show     | AppHttpControllersAdminArticleController@show         | web,admin.login |
|        | DELETE                         | admin/article/{article}        | admin.article.destroy  | AppHttpControllersAdminArticleController@destroy      | web,admin.login |
|        | PUT|PATCH                      | admin/article/{article}        | admin.article.update   | AppHttpControllersAdminArticleController@update       | web,admin.login |
|        | GET|HEAD                       | admin/article/{article}/edit   | admin.article.edit     | AppHttpControllersAdminArticleController@edit         | web,admin.login |
+--------+--------------------------------+--------------------------------+------------------------+-----------------------------------------------------------+-----------------+

class CategoryController extends CommonController {

    /**
     * get admin/category 全部分類列表
     */
    public function index() {
    }

    /**
     * get admin/category/create 添加分類 get
     */
    public function create() {
    }

    /**
     * get admin/category/{category} 顯示單個分類信息
     */
    public function show() {
    }

    /**
     * delete admin/category/{category} 刪除單個分類
     */
    public function destroy($cate_id) {
    }
    

    /**
     * put admin/category/{category} 更新分類
     */
    public function update($cate_id) {
    }

    /**
     * get admin/category/{category}/edit 編輯分類
     */
    public function edit($cate_id) {
    }


    // post admin/category 添加分類 post
    public function store() {

    }

}

引入富文本編輯器


    
    
    

    

    

    

                   

縮略圖上傳
uploadify插件

展示:







上傳:

/**
 * 圖片上傳
 */
public function uploadImg() {
    $file = Input::file("Filedata");
    // 檢驗上傳的文件是否有效
    if ($file->isValid()) {
        $extension = $file->getClientOriginalExtension(); // 后綴名
        // 自定義目錄
        $newName = date("ymdhis").mt_rand(100, 999).".".$extension; // 201702191657000000aaa.png
        $path = $file->move(base_path()."/uploads", $newName); // base_path()  項目根目錄
        $filePath = "/uploads/".$newName;
        echo $filePath;
    }
}

laravel普通的文件上傳

客戶端:
服務端: $file = Input::file("myfile"); // 檢驗上傳的文件是否有效 if ($file->isValid()) { $clientName = $file->getClientOriginalName(); // 獲取文件名 $tmpName = $file->getFileName(); // 緩存的tmp文件夾中的文件名 $realPath = $file->getRealPath(); // tmp文件夾中的絕對路徑 $extension = $file->getClientOriginalExtension(); // 后綴名 $mimeType = $file->getMimeType(); // mime 類型 $path = $file->move("storage/uploads"); // 移動 // 存放默認位置 `public/storage/uploads/xxxx.tmp` // 自定義目錄 $path = $file->move(app_path()."/storage/uploads", $newName); // app_path() 計算的路徑是app文件夾所在的路徑 // $newName = md5(date("ymdhis").$clientName).".".$extension; }

分頁服務

/**
 * GET admin/article
 * 全部文章列表
 */
public function index() {
    // 分頁
    $data = Article::orderBy("art_id", "desc")->paginate(2);
    return view("admin.article.index")->with("data", $data);
}

顯示:

{{$data->links()}}

實體輸出

{!! $title !!}

friendlyLink

使用Migrations數據庫遷移創建數據表
數據遷移和數據填充

創建數據表

創建文件

php artisan make:migration create_links_table

書寫表信息

engine = "myisam";
            $table->increments("link_id");
            $table->string("link_name")->default("")->comment("名稱");
            $table->string("link_title")->default("")->comment("標題");
            $table->string("link_url")->default("")->comment("鏈接");
            $table->integer("link_order")->default(0)->comment("排序");
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop("links");
    }
}

執行填充

php artisan migrate

使用Seeding填充測試數據

創建文件

php artisan make:seeder LinksTableSeeder

寫入字段

insert([
            "name" => str_random(10),
            "email" => str_random(10)."@gmail.com",
            "password" => bcrypt("secret"),
        ]);
    }
}

DatebaseSeeder.php文件中執行

call(LinksTableSeeder::class); // 執行LinksTableSeeder.php文件
    }
}

寫入數據庫

php artisan db:seed

網站配置模塊

統計相關組件

默認圖片

列表頁版權提示

每天發布文章數

網站狀態

配置項標題

網站配置表

create table b_config(
    conf_id int auto_increment primary key,
    conf_title varchar(50) not null default "" comment "配置項標題",
    conf_name varchar(50) not null default "" comment "變量名",
    conf_content text comment  "變量名值",
    conf_order int(11) not null default 0 comment "排序",
    conf_tips varchar(255) not null default "" comment "說明&備注",
    conf_field_type varchar(50) not null default "" comment "字段類型",
    conf_field_value varchar(255) not null default "" comment "字段類型值"
)engine myisam charset utf8;

生成網站配置項文件

/**
 * 生成配置項文件
 */
public function putFile() {
    // echo IlluminateSupportFacadesConfig::get("webConf.web_title"); // 拿取配置項信息
    // 拿取文件
    $config = Config::pluck("conf_content", "conf_name")->all(); // 過濾要的字段及信息
      $path = base_path() . "configwebConf.php";

      // 重組數據 ,寫入配置文件
      $str = "

模型方法:

$config = Config::pluck("conf_name", "conf_content"); // 過濾要的字段及信息
$coinfAll = Config:all(); // 獲取全部字段及信息

在模板中讀取配置項信息

Config::get("web.web_title"); // 文件名.鍵值
// 獲取最新的數據
$data = Article::where("cate_id", $cate_id)->orderBy("art_time", "desc")->paginate(4);
// 讀取子分類
$submenu = Category::where("cate_pid", $cate_id)->get();

// 賦值模板
View::share("$nav", $nav);

laravel函數
dd() 打印消息
back() 返回前一請求,
back()->with("msg", txt) 返回前一個請求,帶回信息.
back()->withErrors($validator); 返回前一個請求,帶回驗證信息.
view() 顯示視圖頁面
confing()讀取配置項
session() 獲取和設置session字段
redirect() 跳轉頁面,重定向
base_path()獲取根目錄文件夾路徑
app_path()獲取app目錄的路徑
take() 模型獲取指定條數:Article::orderBy("art_view", "desc")->take(6)->get();

laravel模板中使用的函數
asset()顯示靜態資源.(css&img&js)
url() 地址引用 (使用/分割目錄)
method_field("PUT")提交type

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22356.html

相關文章

發表評論

0條評論

NoraXie

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<