1、控制器總結
1、控制器命名:大駝峯+Controller.php
2、控制器文件創建使用命令行:php artisan make:controller TestController
自動生成三行代碼:創建命名空間;導入命名空間;創建類並繼承Controller,Controller.php在Controller目錄下
3、接受用戶輸入數據:
接受用戶輸入的類:illuminate\Support\Facades\Input,該類裏的一些靜態方法:
Input::get('參數','如果參數沒有被傳遞使用該默認值')
Input::all('');獲取所有用戶的輸入
Input::get('');獲取單個的用戶輸入
Input::only([ ]);獲取指定幾個用戶的輸入
Input::except([ ]);獲取指定幾個用戶的輸入以外的所有參數
Input::has('name');判斷某個輸入的參數是否存在。
上述方法既可以獲取get中的信息,也可以獲取post中信息。
在laravel中如果需要使用facedes的話,但是又不想寫那麼長的引入操作。則可以在config/app.php中定義長串的別名(在aliases數組中定義別名)。
提示:在laravel中,不僅僅Input門面可以獲取用戶的輸入,Resquset門面也可以獲取用戶輸入的,其語法和Input一樣,也存在get、all、only等方法。
4、控制器中對視圖的渲染和模型的調用等在路由一文中總結:https://blog.csdn.net/weixin_34128914/article/details/84545559
2、視圖
1、在resource目錄下創建相應的視圖文件。
文件名稱:login.blade.php,如果.php命名的,不能使用blade模板引擎的標籤語法顯示數據。兩師徒文件同時存在,則.blade.php優先顯示。
2、視圖中使用函數:{{函數名(參數1,參數2....)}}
3、循環、分支標籤
@foreach($variable as $key=>$value)
//循環體
@endforeach
@if(條件表達式)
//執行語句
@elseif(條件表達式)
...
@else
//默認執行語句
@endif
4、模板的繼承
父級頁面編寫: @yield('名字') //在父級頁面中佔位。
子頁面編寫: @extends('需要繼承的模板文件名')
通過session標籤綁定區塊/部件到父級頁面。區塊名稱就是父級頁面yield標籤的參數名,繼承的父模板文件名是一個完整的路徑名。不是相對路徑
@session(父級區塊名稱)
//代碼
@endsession
5、引入子視圖
<div>
@include('shared.errors')
<form>
<!--表單內容 -->
</form>
</div>
被引入的視圖會繼承父視圖中的所有數據,同時也可以向引入的視圖傳遞額外的數組數據:
@include('view.name', ['some' => 'data'])
還有其他常用的引入指令:
@includeIf:引入一個不能確定存在與否的視圖
@includeWhen:根據給定的布爾條件來 @include 一個視圖
@includeFirst:引入給定視圖數組中的第一個視圖
6、在laravel中系統封裝了一個引入外部靜態頁面(js、css、image)的方法asset()
<!--常規寫法-->
<link rel="stylesheet" type="text/css" href="/css/app.css">
<!--laravel寫法-->
<link rel="stylesheet" type="text/css" href="{{asset('css')}}/app.css">
asset()方法中的參數可以是多級目錄,也可以是單級目錄。兩個方法都可以。
3、模型(AR模式)
AR模式即Active Record模式,是一個對象-關係映射(ORM)技術。每個AR 類代表一張數據表(或視圖),數據表(或視圖)的字段在 AR 類中體現爲類的屬性,一個AR 實例則表示表中的一行記錄。
1、模型默認定義在app目錄下,但是爲了管理,一般分目錄進行創建,命名規則:表名(首字母大寫).php
2、可以使用artisan命令創建模型:
php artisan make:model Flight
如果要在生成模型時生成數據遷移,可以使用 --migration 或 -m 選項:
php artisan make:model Flight --migration
php artisan make:model Flight -m
創建完成後的結構代碼:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
//
}
3、模型關聯表設置:
①:定義模型table屬性來關聯表:創建完成後,我們並沒有告訴Eloquent,模型該使用哪一個數據表,還需要通過給模型上定義 table 屬性,來指定自定義數據表:如果不指定,將使用類的複數形式「蛇形命名」來作爲表名
②:Eloquent 也會假定每一個表都會有遞增的整型 id 作爲主鍵.。你可以定義一個受保護的 $primaryKey 屬性來重寫此約定,如果你的主鍵不是一個整數,你需要在模型上將受保護的 $keyType 屬性設置爲 string.
③:默認情況下, Eloquent 會假定你的表中存在 created_at 和 updated_at 字段. 如果你不想讓 Eloquent 自動管理這倆個列, 可以在你的模型中將 $timestamps 屬性設置爲 false。
4、模型操作數據庫:一旦你創建了模型 和他關聯的數據表, 你就可以從數據庫中獲取數據了. 將每一個模型想象成一個強大的查詢構造器,你可以使用它來更快速的查詢表。舉個栗子:
$flights = App\Flight::where('active', 1)
->orderBy('name', 'desc')
->take(10)
->get();