1. 程式人生 > >laravel初接觸

laravel初接觸

一、本地安裝laravel框架

通過composer安裝laravel框架:

//composer create-project --prefer-dist laravel/laravel <專案名>
composer create-project --prefer-dist laravel/laravel blog

二、執行artisan命令

1、控制器
通過如下命令建立的控制器會出現在app資料夾裡的Http資料夾裡的Controllers資料夾裡

php artisan make:controller <控制器名字>

三、laravel框架初識

在laravel框架裡,路由訪問控制器,控制器呼叫模版
1、在laravel框架裡,檔案的訪問必須通過路由,所有的路由都在routes目錄中的路由檔案來定義,web介面的路由是在routes/web.php檔案中定義

Route::get('/', '[email protected]');

如上的路由將會尋找控制器TestController中的home方法
2、控制器中呼叫模版的示例

class TestController extends Controller
{
    public function home()
    {
        return view('home.home'
); } // }

view方法訪問的是resources資料夾裡的views資料夾,上面示例尋找的是views資料夾裡的home資料夾裡的home模版,模版檔案的命名規範是檔名.blade.php
3、laravel框架引入了bootstrap4,如果想在頁面中使用bootstrap4,可以直接引入public裡的css裡的app.css檔案來使用
app.scss.png

4、在實際開發中,會存在某一模組需要在很多頁面中使用,為了實現程式碼的複用,就需要使用@yield,@extends,@section,@endsection
使用方法:建立一個父模版頁面,將公共的部分寫在裡面,然後在需要變更的地方用@yield('佔位名')

佔位符來佔位,在子模版頁面中使用@extends('父模版')繼承父模版裡面的內容,然後使用@section('佔位名')<頁面佈局程式碼塊>@endsection
如果只是希望給父模版頁面傳一個值,那麼就不用定義section塊,直接使用@section('<佔位名>','<值>'),父模版使用@yield('<佔位名>','<預設值>'),這樣渲染引擎在渲染時,如果子模版通過@section傳值了,那麼就用子模版傳過來的值來取代佔位符,如果子模版沒有傳值,那麼就用預設值來取代佔位符
父模版頁面.png
子模版頁面.png

5、配置前端腳手架,方便程式碼的開發,不用再去配開發環境
npm install–>npm install cross-env
6、npm run dev編譯,會根據webpack.mix.js檔案,將css和js編譯到指定的位置
7、npm run watch:每次改變scss等檔案之後執行npm run dev編譯,會麻煩也不高效,所以要監聽檔案,這樣每次修改scss檔案之後,會自動幫我們編譯
8、對於複用的程式碼片段,可以通過@include('<檔名>')來引入
9、路由起別名

Route::get('/', '[email protected]');

這種路由的定義方式下,可能路由的路徑需要改變,這時候,如果不改變相應連結的href值,那頁面可能會找不到。針對這種情況,可以通過鏈式操作給路由起一個別名,如下:

Route::get('/', '[email protected]')->name('home');

相對應的連結的地方,使用{{route('<路由別名>')}}的方式訪問
10、資料庫遷移,相當於資料庫的版本控制
首先需要修改.env檔案中與資料庫相關的配置,php artisan migrate執行資料庫遷移,會根據database資料夾裡的migrations資料夾裡的遷移類檔案來生成資料表,執行的是類裡的up方法,除了生成與檔案對應的表之外,還會生成一個migrations表,裡面記錄的就是建立表的版本資訊
當執行過資料遷移後,若不建立新的遷移檔案(即不建立新的資料表)(每個遷移檔案的檔名都會有對應的時間戳),再執行資料遷移,不會有效果,因為它會到migrations表中查詢有沒有對應的表,如果有那麼就不會再建立
php artisan migrate:rollback執行回滾遷移,執行的是類檔案裡的down方法,會將資料表刪除,migrations表中對應表的記錄也會刪除
11、建立模型
在框架結構中,一般不直接操作資料庫中的資料表,而是通過建立一個模型,將模型與資料表對應,可以通過php artisan make:model來建立一個模型,可以在後面跟上-m來一起生成一個數據遷移檔案,如:php artisan make:model Article -m,那麼就會在app資料夾下生成Article模型,並在database資料夾下的migrations資料夾下生成對應的遷移檔案
如果在模型檔案中不指定表名,那麼預設對應的資料表的表名就是<模型名>s的命名方式
12、使用tinker可以讓我們在命令列測試資料庫,而不用在檔案中寫測試語句
php artisan tinker進入tinker命令列
在tinker命令列中可以通過模型修改表記錄,如:

php artisan tinker
use \App\User
$user = User::first()      //獲取user表中第一條記錄
$user->name = '小明'    //這樣修改資料表中的記錄並不會被改變,需要再執行save操作才能將兩者進行同步
$user->save()    //這樣操作後資料表中的記錄才會被修改
//也可以通過如下更新表記錄
$user->update(['name'=>'小紅'])

13、通過路由傳遞引數
在定義路由時,可以在路徑後面用{}的方式跟引數,在對應方法裡用形參接收,如:

//web.php
Route::get('/user/{name}', 'user\[email protected]')->name('show');

//UserController/show方法
public function show($name){
    dd($name);    //框架自帶的列印方法
}

//位址列
<域名>/user/小明

//跳轉的頁面中就會將‘小明’打印出來

路由隱式引數的效果:只要方法裡的形參名與路由中定義的引數名一致

//web.php
Route::get('/user/{user}', 'user\[email protected]')->name('show');

//UserController
use App\User

//UserController/show方法
public function show(User $user){
    dd($user->toArray());    //框架自帶的列印方法
}

//位址列
<域名>/user/1

//頁面中就會將資料表user表中主鍵為1的那條記錄打印出來

//如果$user與{user}兩者的名字不一致,比方說形參名變為$people,那麼這時候就會出現404找不到的情況

相關推薦

laravel接觸

一、本地安裝laravel框架 通過composer安裝laravel框架: //composer create-project --prefer-dist laravel/laravel <專案名> composer create-

SmartImageView接觸

android smartimageview 最近一直在學習從遠程服務器獲取圖片,開始時都是手寫這些處理,後來接觸到了smartImageview這個插件。github獲取地址:https://github.com/loopj/android-smart-image-view官方原版插件說明Overv

面向對象接觸(下)

tom pytho cor 控制 elf 類型 () int on() 當一個類中的屬性條件不滿足我們的需求時,考慮到為了不破壞封裝,從而對其屬性進行增加的實現,就有了以下幾種方法 猴子補丁 from test01 import Person from test001

Orleans 接觸(一) 入門例子

方法 ket sys pre 直接 .cn rain ros sqlserve 【返回導航】   在簡單了解了Orleans 之後我們可以通過幾個例子去加深印象 一、Orleans入門例子   這個例子是跟著《Orleans入門例子》(https://www.cnblog

css接觸

簡潔 定義 標簽 auto html元素 light 分類 ref 負數 css:層疊式表,用來美化頁面,定義如何顯示html元素,讓html代碼顯示更加簡潔明了。 css分類:1.內聯:寫在標簽裏面,以屬性的形式,屬性名為style,優先級別最高。(不推薦使用,原因代碼看

Go接觸之imagick

get 對象 top ola error AI AR rap des   imagemagick是一個著名的圖片處理庫,github上有人將其封裝成了golang能用的庫,所以依舊是寫一個縮略圖的程序。今天看項目源碼看的我頭都大了。 1 package main 2

Linux命令接觸

文件 包括 創建 同文件 命令 查看命令 一個 pwd r文件 LS:   列出當前文件夾內容   -a 列出所有內容,包括隱藏的   -l 以列表形式列出所有內容 PWD:   顯示當前路徑 CD:   改變路徑命令 MKDIR:   創建一個或者多個文件夾or文件

SpringBoot接觸

tel 映射 style 頁面 exp hello lba ron 發現 使用SpringBoot寫HelloWorld,當配置好啟動類後,再創建新的controller或其它類,啟動項目後訪問對應的映射名,頁面顯示: Whitelabel Error Page This

Linux命令接觸(二)

less 不同 後綴 .gz shell編程 查看 顯示 末尾 bsp FILE:   查看文件的類型 DIFF:   比較兩個文件內容的不同   diff 文件1 文件2 FIND:   查找文件   find 路徑 -name “文件名” GREP:   根據

學海無涯——機器人流程自動化接觸(RPA,Robotic process automation)

公司舉辦了一個關於RPA的講座,或許是用英語講的原因,聽得稀裡糊塗的。 還是自己補補課吧。 --------------------------------------------------------------------------------------------------

Vue.js接觸

Vue.js框架 Vue是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與現代化的工具鏈以及各種支援類庫結合使用時,Vue 也完全能夠為複雜

React接觸--小Demo

<body> <div id="example"></div> <script type="text/babel"> ReactDOM.render( <h1>Hello, world

.NET Core Mvc和MySql接觸(三)log4Net全域性異常日誌

首先到NuGet上安裝log4net 安裝完成後增加一個log4net配置檔案,命名隨意,需要到startup.cs初始化 <?xml version="1.0" encoding="utf-8

jmeter初級學習一效能測試接觸------《JMeter實戰》

技術要求 測試工具:JMeter、LoadRunner 測試基礎 :效能測試理論、自動化測試理論、測試開發 伺服器效能診斷:CPU、磁碟、記憶體、網路 優化技能:程式碼、架構、中介軟體、作業系統、資料庫(SQL、配置、設計) 協議:http/https、We

接觸linux的那些事兒

        週六安裝了虛擬機器,也裝了centos6.8。但是安裝的是基礎版的,沒有那麼多功能,而linux呢,好多功能和外掛都是需要我們自己來安裝擴充套件的。         1,首先,我們需要安裝onei

【spring-boot】spring aop 面向切面程式設計接觸

眾所周知,spring最核心的兩個功能是aop和ioc,即面向切面,控制反轉。這裡我們探討一下如何使用spring aop。 1.何為aop   aop全稱Aspect Oriented Programming,面向切面,AOP主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個

[Python接觸]Windows10-32bit+Python2.7.12+OpenCV3.1.0配置

       筆者在Windows10-64bit + Python2.7.12 + OpenCV3.1.0配置上進行了配置,併成功了。現在,筆者拎起另一臺電腦進行配置,並記錄如下,望共勉。    

Spring Boot Spring Aop接觸

眾所周知,spring最核心的兩個功能是aop和ioc,即面向切面,控制反轉。這裡我們探討一下如何使用spring aop。 1.何為aop   aop全稱Aspect Oriented Programming,面向切面,AOP主要實現的目的是針對業務處理過程中的切面

mongodb系列教程——1接觸

MongoDB是什麼? MongoDB屬於記憶體型資料庫,是一種基於文件的,非關係資料庫,在需要讀效能要求很高的專案中有著比較不錯的表現。可做前段快取伺服器、緩衝資料儲存區,同樣也可以作為應用系統的儲存伺服器,例如微博、論壇等應用系統,也可以作為圖片儲存伺服器(分散式);

java6內建JS引擎接觸

由於要用到該技術,所以寫了幾個測試,直接上程式碼。 定義外部資源E:/ScriptEngine/test01.js if(age>=18){ print('Old enough to vote!'); }else{ print('Back to school