laravel學習四:控制器、視圖、模型介紹

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章