




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、laravel-藝術(shù)家的框架作者:西嶺博客:xilinglaoshi出自:布爾教育-高級(jí)PHP工程師培訓(xùn)第1章 如何安裝laravel1.1 四種安裝方法我們?cè)撊绾伟惭b laravel, 網(wǎng)上你大概能找到4種方法,但你不要去死記.而是要從原理推出:完整的 laravel = laravel本身 + composer指定的依賴庫(kù)所以你至少可以有這4種辦法 :1. 用composer create-project 命令自動(dòng)laravel, 同時(shí)自動(dòng)安裝依賴庫(kù)composer create-project laravel/laravel=5.1.1 項(xiàng)目名稱2. 手動(dòng)laravle 本身 ,comp
2、oser 安裝依賴庫(kù) (半自動(dòng)化)3.laravel,再到項(xiàng)目目錄下,執(zhí)行composer install;別人幫拼裝好的laravel本身+composer中指定的庫(kù),不需要安裝composer;在這 :此方法的局限性在于,如果項(xiàng)目過(guò)程中需要其他的庫(kù),還是需要composer安裝;4.larvel 安裝器,可以幫你完成這兩步(強(qiáng)烈不推薦,麻煩而且不認(rèn)識(shí)國(guó)內(nèi)鏡像源)# “l(fā)aravel ” ( laraval ) composer global require "laravel/installer"-cd /usr/local/nginx/html/.composer/ve
3、ndor/bin/laravel new <you appName>1.2 配置虛擬主機(jī)注意,項(xiàng)目路徑在public下修改虛擬主機(jī)配置文件,添加如下代碼:<VirtualHost *:80>DocumentRoot "D:/www/<project>/public" ServerName </VirtualHost>修改hosts文件: 第2章 路由器任何框架都離不開(kāi)路由器,TP是通過(guò)地址欄規(guī)則生成,如:.com/home/user/add;2.1 路由器如何調(diào)用器laravel 的路由器與文件中明確定義.格
4、式如下 :器的關(guān)系,需要明確的在/app/Http/routes.php/* GET , XxController reg() .*/Route:get('/yy', 'XxControllerreg');/* POST , XxController pay() .*/Route:post('/zz', 'XxControllerpay');/* GET "/" ,2 .*/Route:get('/', function () return 'hello')/*GETPOST ,
5、 XxController method() .*/Route:match('get','post' , '/user' , 'XxControllermethod')/*GET,POST,PUT,DELETE. 2 .*/Route:any('/foo/bar', function () return 'Hello World');注意 : 如果同一個(gè)路由被寫了2次,則以最后一次路由為準(zhǔn) !2.2 路由器與參數(shù)傳遞/* URL,user ,*/Route:get('user/id'
6、, function ($id) return 'User '.$id;);/* URL,cat page , */Route:get('cat/cat/page/page', function ($catid, $pageid) return $catid.$pageid;);如果沒(méi)有傳遞參數(shù),則會(huì)報(bào)錯(cuò);2.3 傳遞可選參數(shù)在路由 參數(shù) 的花括號(hào)最后 加上 ?(問(wèn)號(hào)) 即可Route:get('user/name?', function ($name = null) return $name;);Route:get('user/name
7、?', function ($name = 'John') return $name;);2.4 參數(shù)限制在 TP 中,自動(dòng)驗(yàn)證寫在 M里,不夠靈活. laravel把參數(shù)限制寫在方法或者路由中.普通形式:->where('要限制的參數(shù)名','限制規(guī)則(正則,不用斜線/)');數(shù)組形式:->where('要限制的參數(shù)名1'=>'限制規(guī)則1(正則,不用斜線/)','要限制的參數(shù)名2'=>'限制規(guī)則2(正則,不用斜線/)');Route:get('
8、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
9、-z+');注意 : 路由參數(shù)不能包含中橫線 "-",參數(shù)會(huì)被理解為變量名,所以不能有'-',下劃線是可以滴;第3 章器器放在哪兒?叫什么 ?器放在'/app/Http/Controllers' 目錄下文件名 : XxController.php例 : UserController.php注意 : 單詞首字母大寫 大駝峰規(guī)則 3.1器類叫什么?命名空間叫什么?繼承自誰(shuí)?3.2類叫XxController命名空間是 AppHttpControllers繼承自AppHttpControllersControllernamespace Ap
10、pHttpControllers;use AppHttpControllersController;classController extends Controller public function add() echo ''也可以放在Controllers的其他目錄下如:AppHttpControllersAdminTestController.phpnamespace AppHttpControllersAdmin;use AppHttpControllersController;class TestController extends Controller public
11、 function index()return 'AdminTestController'相應(yīng)路由的寫法,如下:Route:get('test','AdminTestControllerindex');第4章 模板操作4.1 模板放在哪兒?叫什么?模板放在/resources/view 下. 叫什么什么:xx.php,或xx.blade.php注意:如果以.php結(jié)尾,模板中直接寫 PHP 語(yǔ)法即可,例 <?php echo $title; ?>如果以.blade.php結(jié)尾,則可以使用 laravel 特有的模板語(yǔ)法也可以直接使用P
12、HP語(yǔ)法例 $title 如果有 xx.php和xx.blade.php 兩個(gè)同名模板,優(yōu)先用 blade 模板.模板中是HTML代碼,不要以為是PHP文件就寫PHP代碼;4.2 和直接在例 :器有什么對(duì)應(yīng)關(guān)系?器方法里即可,不像TP一樣,有對(duì)應(yīng)關(guān)系,不要搞混.XxController public function yyMethod()return view('zz'); / views/zz.blade.phppublic function yyMethod()return view('user.add'); / views/user/add.blade.p
13、hp4.3 模板賦值將值寫到關(guān)聯(lián)數(shù)組中,然后將數(shù)組寫到 view 函數(shù)的第二參數(shù)中;public function up()$date = 'title'=>'','msg'=>'' return view('up',$date);在view中,直接將數(shù)組的鍵當(dāng)做變量來(lái)使用:project/resources/views/up.php (不帶有blade模板,只能用PHP語(yǔ)法):<h1><?php echo $title;?></h1><p><?ph
14、p echo $msg; ?></p>project/resources/views/up.blade.php(PHP語(yǔ)法和模板語(yǔ)法都支持):<h1><?php echo $title;?></h1><p>$msg</p>第5章 數(shù)據(jù)庫(kù)5.1 創(chuàng)建數(shù)據(jù)庫(kù),修改框架配置文件創(chuàng)建庫(kù):create database msg charset utf8;修改配置文件:DB_CONNECTION=mysql DB_HOST= DB_DATABASE=msgDB_USERNAME=rootDB_PASSWORD=
15、5.2 遷移文件依我們目前的知識(shí),需要建表create table(.) ,需要改表alter table. .但是,在 laravel 中,不建議直接操作數(shù)據(jù)庫(kù) 建表和修改表, 而是把對(duì)表的操作寫成 migration 遷移文件.然后 lavavel 通過(guò)遷移文件來(lái)操作表.所以 , 數(shù)據(jù)遷移文件就是 操作表的語(yǔ)句文件為什么用遷移文件 , 而不直接敲 sql 操作表 ?1. 便于團(tuán)隊(duì)統(tǒng)一操作表.2. 出了問(wèn)題,容易追查問(wèn)題和回溯,有歷史回退功能.比如你在電腦上create table(),建了一張表 .但其他幾個(gè)程序員,如何和你保持同步?也打開(kāi) mysql臺(tái)執(zhí)行一遍?都執(zhí)行一遍當(dāng)然可以,但很容
16、易各程序員操作不一致的情況.把操作數(shù)據(jù)庫(kù)的語(yǔ)句,寫在文件里,大家用同一份文件操作表,就能操持高度一致了.其實(shí)就是對(duì)表的操作,都體現(xiàn)在文件上,而不是隨手敲個(gè)命令改表.假設(shè)出現(xiàn)不一致的情況,也有歷史可以回退;遷移文件用命令行生成,不要寫,生成后再補(bǔ)齊內(nèi)容;創(chuàng)建表命令:php artisan make:migration create_good_table -create=goods解釋:artisan在項(xiàng)目的根目錄下,其實(shí)就是一個(gè)PHP make:migration創(chuàng)建遷移文件create_good_table文件,所以用PHP去執(zhí)行次文件自定義文件名-最好能夠體現(xiàn)次遷移文件的作用-create=
17、goods創(chuàng)建表,表名為goods執(zhí)行完命令后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建遷移文件; 在project/database/migrations/目錄下我們只需要在 function 中補(bǔ)齊對(duì)表的操作即可,比如字段,字段類型等 .遷移文件是一個(gè)類文件此類中,有2個(gè)基本方法,up()和down(). 這兩個(gè)方法,互為逆向操作 .比如 :up() 負(fù)責(zé)建表 , 加列 , 加索引down() 負(fù)責(zé)刪表 , 減列 , 去索引5.3 遷移命令的使用命令行中執(zhí)行 :php artisan make:migration create_good_table -create=goods,創(chuàng)建遷移文件;文件創(chuàng)建后,通過(guò)修改遷移
18、文件,添們需要的相應(yīng)字段;public function up()Schema:create('goods', function (Blueprint $table) $table->increments('id');$table->char('titles'); /$table->timestamps(););修改完成后,執(zhí)行命令:php artisan migrate運(yùn)行遷移文件后,查看數(shù)據(jù)庫(kù),就會(huì)出現(xiàn)相應(yīng)的表; 回退命令:php artisan migrate:rollback想要在表中添加字段,不能修改執(zhí)行后的遷移文件;
19、觀察遷移文件,是有明確的時(shí)間的,再看數(shù)據(jù)庫(kù)中的migration表,是有明確執(zhí)行過(guò)的;已經(jīng)所以我們需要重新生成遷移文件: 修改表命令:php artisan make:migration add_price_to_good -table=goods執(zhí)行完成后,回生成遷移文件,然后修改遷移文件:public function up()Schema:table('goods', function (Blueprint $table) /$table->char('',50););再次執(zhí)行遷移文件:php artisan migrate ;數(shù)據(jù)庫(kù)中就會(huì)看到我們新
20、添加的字段;5.4 數(shù)據(jù)遷移操作當(dāng)遷移文件做好的之后 , 以下幾個(gè)命令 , 執(zhí)行遷移文件 . php artisan migrate 執(zhí)行所有遷移文件php artisan migrate:rollback 回退到最近執(zhí)行遷移的狀態(tài)php artisan migrate:reset 回退到所有遷移之前的初始狀態(tài)php artisan migrate:refresh 回退到初始狀態(tài) , 再次執(zhí)行所有遷移文件php artisan migrate:statusphp artisan migrate:installphp artisan migrate -force: 強(qiáng)制執(zhí)行最新的遷移文件5.5
21、遷移語(yǔ)法速查表可用的字段類型:結(jié)構(gòu)構(gòu)造器包含了許多字段類型,供你構(gòu)建數(shù)據(jù)表時(shí)使用:$id = DB:table('goods')->insertGetId($rows);var_dump($id);6.2 update 修改操作典型修改 DB:table('users')->where('id', 1)->update('age' => 19) 相當(dāng)于sql: update users set age=19 where id=1 ;某字段在原基礎(chǔ)上 增長(zhǎng)或減少 increment/decrement 返回值
22、是受影響的行數(shù);DB:table('users')->where('id',1)->increment('age');/13); /DB:table('users')->where('id',2)->increment('age',DB:table('users')->where('id',3)->decrement('age');DB:table('users')->where('id
23、',4)->decrement('age', 3);6.3 delete 刪除操作var_dump(DB:table('goods')->where('id' , '>' , 3)->delete();/where 有三個(gè)參數(shù)時(shí),其中第二個(gè)參數(shù)當(dāng)做運(yùn)算符/返回受影響的行數(shù)6.4 查找操作注意 : 取出的數(shù)據(jù) , 無(wú)論是單行還是多行 , 每一行數(shù)據(jù)都是以一個(gè)對(duì)象的形式組織的 .不是關(guān)聯(lián)數(shù)組 ./ select * from users; DB:table('goods')->ge
24、t();/ select * from user where id > 6DB:table('goods')->where('id' , '>' 6)->get();/ select id,from users where id > 6DB:table('goods')->select('id','')->where('id' , '>' 6)->get();/ select * from users where
25、id=6 , DB:table('goods')->where('id',6)->first()第7章 完整的增刪改查-留言板7.1 程序GET /msg/index 展示留言列表GET /msg/add 展示表單POST /msg/add 接受 POST 數(shù)據(jù),并入庫(kù)GET /msg/del/id 刪除留言GET,POST /msg/up/id 修改留言按寫如下路由器:Route:get('msg/index' , 'MsgControllerindex'); Route:get('msg/add'
26、, 'MsgControlleradd'); Route:post('msg/add' , 'MsgControlleraddPost'); Route:get('msg/del/id' , 'MsgControllerdel');Route:match('get','post','msg/up/id' , 'MsgControllerup');生成在器 : php artisan make:controller MsgController器中,補(bǔ)全實(shí)
27、現(xiàn)方法;7.2 數(shù)據(jù)遷移1. 生成遷移文件php artisan make:migration create_msgs_table -create=msgs2. 編輯遷移文件public function up() Schema:create('msgs', function (Blueprint $table)$table->increments('id');$table->string('title',50);$table->string('content',200);$table->integer(&
28、#39;pubtime');$table->timestamps(););public function down() Schema:drop('msgs');3.執(zhí)行遷移命令: php artisan migrate7.3 發(fā)布留言表單頁(yè) /resources/views/msg/add.php<h1>laravel </h1><form action="" method="post"><p><input type="text" name="
29、;title"></p><p><textarea name="content"></textarea></p><p><input type="submit" value=" "></p></form>public function add() return view('msg.add');提交出錯(cuò) : TokenMismatchException in VerifyCsrfToken.php li
30、ne 53:不要驚慌 , 這是因?yàn)?laravel 自帶防站外提交 (Csrf) 的功能 . 原理 : 加入某個(gè)特征串 , 在 POST 接收頁(yè)面檢測(cè)此特征串 . 解決 : 在表單中 , 加入這個(gè)特征串就行了 .<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">添加方法:public function addPost()$rs = DB:table('msgs')->insert('titl
31、e'=>$_POST'title' ,'content '=>$_POST'content');return $rs ? 'OK' : 'fail'報(bào)錯(cuò),是因?yàn)閡se DB;7.4 顯示留言列表public function index() $msgs = DB:table('msgs')->get();return view('msg.index' , 'msgs'=>$msgs);/resources/views/msg/index
32、.php :<body><h1> </h1><table><tr><td> <td><td> </tr></td></td></td><?php foreach($msgs as $m) ?><tr><td><?php echo $m->title;?> </td><td><?php echo $m->content;?></td><td&
33、gt;<a href="">|<a href=""></td></tr><?php ?></table></body> </a> </a>7.5 刪除留言模板修改:<td>echo $m->id;?>"> </a><a href="/msg/del/<?php|<a href="/msg/up/<?php echo $m->id;?>&quo
34、t;> </a></td>刪除+跳轉(zhuǎn)public function del($id)if(DB:table('msgs')->where('id',$id)->delete() return redirect('msg/index');else return 'del fail'7.6 修改留言板1.取出數(shù)據(jù),在模板中顯示public function up($id)if(empty($_POST)$row = DB:table('msgs')->where('
35、;id',$id)->first(); return view('msg.add','row'=>$row);<project>/resources/views/msg/add.php<p><input type="text" name="title" value="<?php echo $row->title;?>"></p><p><textarea name="content"
36、><?php echo $row->content; ?></textarea></p>提交數(shù)據(jù),寫入數(shù)據(jù)庫(kù)public function up($id)if(empty($_POST)$row = returnelse $row =DB:table('msgs')->where('id',$id)->first();view('msg.add','row'=>$row);'title'=>$_POST'title','
37、content'=>$_POST'content'DB:table('msgs')->where('id',$id)->update($row);* 至此: *我們已經(jīng)用 laravel 做了一個(gè)簡(jiǎn)單留言板從增刪改查的角度講 , 此時(shí)你可以用 laravel 做任意但是 ,laravel 還有很多漂亮的功能沒(méi)有用上接下來(lái) , 繼續(xù)深入學(xué)習(xí) laravel了 .第8章 blade模板laravel 有的模板引擎,以.blade.php結(jié)尾.語(yǔ)法相較TP模板和Smarty模板更簡(jiǎn)潔一些.8.1 數(shù)據(jù)要集中傳遞到模板在 Sma
38、rty 和 TP 模板中 , 要把變量assign 給模板引擎 .例 :$smarty->assign('title'=>' ');$smarty->assign('content'=>' 13 ');在 blade 模板中,不是assign,而是以數(shù)組參數(shù)集中傳遞.例 :$data = 'title'=>' ', 'content'=>' ', 'score'=>mt_rand(40,90),'use
39、rs'=>'zhangsan','lisi','wangwu'return view('test',$data);模板中,普通變量的使用:$title => 天氣預(yù)報(bào)8.2 模板public function test()$arr = 'ti'=>'13','de'=>'sldak','user'=>'1','3','55' return view('msg.
40、test',$arr);if (express) # express elseif (express) # else endif例 :$scoreif ($score >= 80)elseif ($score >= 60) else endif除非,和 if 相反:unless ($score >= 60) score 60 endunless8.3 循環(huán)for循環(huán):for ($i=0; $i<10; $i+)$i <br> endforforeach 循環(huán):foreach ($user as $u)$u endforeachforelse 循環(huán)是否
41、為空f(shuō)orelse ( as $u)$u / emptynobody /endforelse8.4 模板包含與繼承包含:include('msg.sub') 包含views 下的msg/sub.blade.php繼承:模板繼承比模板包含更強(qiáng)大. 如下 , 一個(gè)典型的網(wǎng)頁(yè)結(jié)構(gòu)頭部和尾部都一樣 , 就中間的左右內(nèi)容不一樣.|-|-|用include 模板來(lái)做 , 是把頭尾拿出來(lái)header , footer;然后include('header') , include('footer'),需要include 兩次 ; 而繼承則是把header/foot
42、er 公共框架寫在父模板中,繼承一次父模板.模板繼承的概念和面向?qū)ο蟮睦^承非常相似,看下例:<!- parent.blase.php -><html><meta charset="utf-8"><body><div style="background:gray;"> section('left')this is parent left show</div><div style="background:green;"> section(&
43、#39;right')this is parent right show</div></body></html>父模板中有 2 個(gè)方eft , right;子模板繼承父模板 , 并且重寫left,right方法,即可獲得子類的特定輸出.<!- son.blade.php-> extends('parent') section('left')son leftendsectionsection('right') son right parentendsection根據(jù)面向?qū)ο蟮闹R(shí),子模板的同名
44、方法覆蓋父類方法.同時(shí),子類right 方法中因此,顯示結(jié)果為:的父類方法.<!- parent.blase.php -><html><meta charset="utf-8"><body><div style="background:gray;"> son left</div><div style="background:green;"> son rightparent right</div></body></html&
45、gt;8.5 不模板和防xss在一些前端模板引擎中 , 也有可能用 做邊界 ,.為防止blade 模板去例 : $jsvar, 前面加 符號(hào)防 XSS:'code'=>'<script>alert(1)</script>'view <script>alert(1)</script> , : !$code! (1,)第9章 強(qiáng)大的 M放在哪兒? 命名空間是什么?9.1 M文件默認(rèn)放在/app 目錄下 , 命名空間是App.文件也可以自由的放在其他目錄,但請(qǐng)注意命名空間和目錄路徑保
46、持一致 .mm類叫什么? 繼承自誰(shuí)?9.2 M在 laravel 中約定 (非強(qiáng)制),表名叫xxs,復(fù)數(shù)形式.如用戶 (user) 表名叫users,郵件 () 表叫s.的類名.類和表名有關(guān)系,一般表名去掉s, 即為 M所以 :users 表的 Ms 表的 M繼承自類叫class User .類叫class, 注意首字母大寫 .IlluminateDatabaseEloquentM以msgs 表對(duì)應(yīng)的Msg.php 文件為例,典型的 M如下 :namespace App;use IlluminateDatabaseEloquentM;class Msg extends M/Controller
47、中只需要 正常new 就可以了:new AppMsg()9.3 自動(dòng)生成和實(shí)例化M可以手寫,可以也用 artisan 命令行工具生成.例 : php artisan make:mMsg實(shí)例化:$m= new App(); / s M, .$m= APP:find(4); / s M, $id=4 .9.5 增public function add() $msg = new AppMsg();$msg->title = $_POST'title'$msg->content= $_POST'content' return $msg->save()
48、? 'OK' : 'fail'9.6 查查單行 : find() 與 first()/ Msg:find($id) / / where Msg:where('id','>',3)->first();查多行 : all() 和 get()/ . select1,2 from msgs;Msg:all(' 1',' 2');/ / Msg:where('id','>',2)->get('1','2'); /Msg:w
49、here('id','>',2)->select('title','content')->get(); /9.7 改public function up($id) if( empty($_POST) ) $msg = returnelse $msg =Msg:find($id);view('msg.up','msg'=>$msg);Msg:find($id);$msg->title = $_POST'title'$msg->content= $_P
50、OST'content'return $msg->save()? 'OK': 'fail'9.8 刪先找到,然后刪public function del($id) $msg = Msg:find($id); return $msg->delete() ?'ok' :'fail'用條件選擇直接刪:public function del($id) return Msg:where('id',$id)->delete()? 'ok': 'fail'9.9
51、復(fù)雜排序 :/ select . where id > 2 order by id desc;Msg:where('id','>',2)->orderBy('id','desc')->get();* 限制條目 */ select . where id>2 order by id desc limit 2,1;/ Msg:where('id','>',2)->orderBy('id','desc')->skip(2)-&g
52、t;take(1)->get();統(tǒng)計(jì):Msg:count();Msg:avg('id');Msg:min('id');Msg:max('id');Msg:sum('id');更加復(fù)雜的:!(9.10 你和m)有個(gè)約定表名的約定 默認(rèn)表名為M屬性來(lái)指定表名. 例:名 + s,如果不想這樣做,可以通過(guò)的 m類的tableclass XxMprotectedextends M$table = 'yourTableName'id 的約定 M默認(rèn) 認(rèn)為,每張表都有一個(gè)叫做id的主鍵, 如果向通過(guò)其他字段名來(lái)設(shè)置主鍵,
53、可以通過(guò)primaryKey屬性來(lái)指定主鍵列名class XxMextends Mprotected $primaryKey = 'Xx_id' /Key created_at,updated_at字段的約定 M默認(rèn)有這2個(gè)字段,且在更新行時(shí),會(huì)自動(dòng)幫你更新這兩個(gè)字段. 如果不想這樣,甚至不想要這2個(gè)字段, 可以在創(chuàng)建遷移文件后,刪除 $table->timestamps(); 然后,設(shè)置 m的timestamps 屬性設(shè)為falseclass XxMextends Mpublic $timestamps = false;第10章 Request 對(duì)象Request 對(duì)上
54、 放置著此次請(qǐng)求的全部信息. 如:請(qǐng)求方式 (get/post)請(qǐng)求參數(shù) ($_POST,$_FILES)請(qǐng)求路徑 (后的部分 )請(qǐng)求 cookie 等諸多信息 , 都存到的Request 對(duì)象上Request 對(duì)象第1個(gè)參數(shù)為Request 類型參數(shù),即可自動(dòng)接收.10.1在方法中,Request 作為方法的第1個(gè)參數(shù)出現(xiàn).另:如果方法中有路由器綁定的參數(shù),不受影響. 例:Route:get('/del/$id');public function del(Request $request , $id) / $id 2 ,.10.2 利用Request對(duì)象修改留言用Reques
55、t對(duì)象改進(jìn)留言修改功能:use IlluminateHttpRequest;.public function up(Request $request , $id) if( empty($_POST) ) $msg = Msg:find($id);return view('msg.up','msg'=>$msg);else print_r( $request->all() );$msg = Msg:find($id);/ $msg->title = $request->title;$msg->content= $request->
56、;content; / return $msg->save() ? 'OK' : 'fail'也可以調(diào)用input 函數(shù):修改上一段代碼$msg->title = $request->input('title'); / input(POST )$msg->content= $request->content; / $msg->pubtime = $request->input('pubtime',time();/()10.3 利用Request對(duì)象做文件上傳路由:Route:get(
57、9;msg/fil','MsgControllerfil');Route:post('msg/ups','MsgControllerups');器:public function fil() return view('msg.fil');public function ups(Request $req)/ $req = request();$req->file('photo')->move('/home/meng/code/dd/public/','bb.png'
58、);模板:<form class="" action="/msg/ups" method="post" enctype="multipart/form-data"><input?>"><input<input</form>type="hidden" name="_token" value="<?php echo csrf_token();type="file" name=&qu
59、ot;photo" value="">type="submit" value="zou">10.4 laravel 與 TP 對(duì)比路由器的區(qū)別:laravel 的路由簡(jiǎn)單,靈活,直接指向器的方法.而 TP 的路由是由 模塊/器/方法 這種規(guī)律生成.準(zhǔn)確的說(shuō),TP不能叫路由,只是URL與器的對(duì)應(yīng)關(guān)系,或者叫URL分發(fā);而 TP 的 "規(guī)則路由","正則路由", 只是URL 的一個(gè)別名甚至是跳轉(zhuǎn),不是真正的路由.整體設(shè)計(jì)的區(qū)別 laravel 接管了的全過(guò)程,數(shù)據(jù)庫(kù)+MVC+錯(cuò)誤處理.laravel 更像一個(gè)全自動(dòng)車床,輸入原料,得到成品. tp 則部分需要手動(dòng),更像一個(gè)工具箱.設(shè)計(jì)思想的區(qū)別 laravel "大處省流程",tp "小處省字母"例 : tp$_GET , $_POST , $_GET ,$_POST , , I('get.id') $_GET
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)生反欺凌安全教育
- 護(hù)理研究中的倫理原則
- 水電安全常識(shí)培訓(xùn)
- 斷指再植病人護(hù)理常規(guī)
- 中班編織刺繡課件
- 幼兒園口腔護(hù)理
- 兩學(xué)一做培訓(xùn)
- 民用航空培訓(xùn)發(fā)展現(xiàn)狀與未來(lái)趨勢(shì)
- 2025年液壓破碎錘項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 2025年“才聚齊魯成就未來(lái)”山東東方大廈有限公司招聘考試筆試試題(含答案)
- 生物基復(fù)合材料的LCA(生命周期評(píng)估)
- 【核心素養(yǎng)目標(biāo)】人教版物理九年級(jí) 13.1分子熱運(yùn)動(dòng) 教案
- 第四課 拗音 課件初中日語(yǔ)人教版七年級(jí)第一冊(cè)
- 廣東省廣州市天河區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期末物理模擬試卷
- 甲乙方施工合同范本
- 嬰幼兒配方乳粉市場(chǎng)銷售管理規(guī)范
- 教科版四年級(jí)下冊(cè)科學(xué)期末測(cè)試卷含完整答案(各地真題)
- 2024時(shí)事政治必考試題庫(kù)附答案(完整版)
- 金融計(jì)量學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東管理學(xué)院
- 04SG518-3-門式剛架輕型房屋鋼結(jié)構(gòu)(有吊車)
- 基于“教-學(xué)-評(píng)”一體化的初中語(yǔ)文有效教學(xué)策略
評(píng)論
0/150
提交評(píng)論