付費下載
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
laravel--藝術1何安裝 結(jié)arave再牛,也是PHP寫的一堆代碼. oo/co/ppu.m/server.p/vearave自身有很多 文件同時有個 poser.jso文件.四種我們該如何安裝 ,網(wǎng)上你大概能找到4種方法,但你不要去死記完整的laravel=完整的laravel=laravel本 composer指定的依賴所以你至少可以有這4種辦法1.用composercreateproject命令自動arave,同時自動安裝依賴composercomposercreateproject別人幫我拼裝好的laravel本身opo中指定的在這:/down手動arav本身 /arave/arave/tree/5.1poseri 下poserilarvel安裝器,可以幫你完成這兩步(不推薦##安裝“l(fā)aravel安裝器”(不是laraval)composerglobalrequire"laravel/installer"cd/rlc/nginx/htmposer/vendor/bin/laravelnew<you修改 權在nux下使用arave,需要修 的權ododorwx<project>/storageodorwx<project>/bootstrap/cache配置在ngnx中,配置server段,指向 依我們要做的p2p金融為例locatiolocatio/ l<e>/ulcidexidex.ppidex.tmidex.}在apache中a RootDwww<retpb"V配置簡潔對于apache,需要開啟rwrt寫模塊ttp.cof中,把下一行前oaorrtolmodlsmowres在<project>/public創(chuàng)建 taccess文件,內(nèi)容如下onFolomLikerteEginOnerteon%{REQUESTIAEderteon%{REQUESTAEferteRl^index.php[L]如果仍不可以,找如下代碼,把Noe改為##owOvrcotrolswatdirectivesmaybeplacedi.taccessfiles.#Itcabe"All","Noe",orayombatioofte AlovrrileIfoAutCofigLmllowveNo對于ngnx,在虛擬主機配置段中加locationlocation/tryfiles$uri$uri//index.php?$query}ngnx實例locatiolocatio/ ljrotryfiles$uri$uri//idex.pp?$querystrig;idexidex.ppidex.tmidex.tm;}可能**1Whoops,ookskesomethngwentcp.evxaml.ecp.evxaml.e2.NosupportedencrypterRuRutiExetiEcryptioServicerovider.pplieNosupportedecrypterfou eciperad/orkeylegtarei原因:arave需要定義一個key,用于作密鑰用,但沒生成這個key.解決:ppartsiakey:geerate生成key服務器這種情況下首先確保環(huán)境是正確,虛擬主機置也正然后問題應該出現(xiàn)在 的權限上.請按.章節(jié)繼續(xù)操作.2由路由roject>/app/Http/routes.parave的路由器與控制器的關系,roject>/app/Http/routes.p/下例指:當用GET方//yy這個/下例指:當用GET方//yy這個地址時,用xoror中的reg()方法去響應Route::get(/yy,xotrorr/當用POST//zz這個地址時,用xoro中的pay()方法去響應Route::post(/zz,Xxotrorpa/當/ "/"時,用第2個參數(shù) 函數(shù)去響應Route::get(/,function{ o/xmtRot::mtc(get,post],/user, xotrorto)///foo/bar,都用第2個參數(shù)中 函數(shù)去響應Route::any(/foo/bar,function{ oor路由下下例是/user/123這樣的URL,user后面的值將會捕捉到并自動傳遞給控制器的方法 函Route::get(user/{id},fuctio{returUser下例是指 /cat/{cat}/page/{page}這樣的URL,cat后的參數(shù)和page后的參數(shù),會 捉到,并自動傳遞給控制器的方法或 函數(shù)Route::get(cat/{cat}/page/{page},fuctio($catid,$pageid)傳遞Route::get(Route::get(user/{ae?,fuctio($ame={retur$Route::get(user/{Route::get(user/{ae?,fuctio($ame= {retur$在TP中,自動驗證寫在Mode里,不夠靈活.arave把參數(shù)限制寫在方法里Route::get(Route::get(user/{am,fuctio($am})>were(ame,[AZaz]Route::get(user/{id},fuctio($id)})>were(id,[09]Route::get(user/{id}/{am,fuctio($id,$am})>were([id=>[09] ame=>[az]注意:路由參數(shù)不能包含中橫線,(想想變量名規(guī)范)".3制控制器放在哪兒<project>/app/Http/Co控制器放<project>/app/Http/Co控制器文件叫什么文件名文件名:Xx控制器Cotroller.p例:UserCotroller.p注意:單詞首字母大寫[大駝峰規(guī)則控制器類叫什么?命名空間叫什么?繼承自誰類叫XxCo類叫XxCo命名空間是App\Http\Co繼承自App\Http\Cotller\CnamespacepptptrruseporrorrclassXxxControllerextends{publicfunctionadd()}}4章模板操模板放在哪兒模板放在<roe>/rorcsvew下叫什么xx.pp,或xx.blade.p如果以.pp結(jié)尾,模板中直接寫PHP語法即可,例<?ppeco$title如果以.blade.pp結(jié)尾,則是用arave特有的模板語法.例{{$title}}注意如果有xx.pp,xx.blade.pp兩個同名模板優(yōu)先用bade模板和控制器有什么對應關系直接在控制器方法里即可.XxControllerXxControllerpublicfunctionreturniezz);//將使用izzdp}publicfunctionreturnieuser.add);//將使用rad}}5章數(shù)據(jù)庫遷創(chuàng)建createcreatedatabaseliocarset修改編輯項目下的.env文件,使之適合自己的服務DBHOS=localDBHOS=localostDBDAAASElDBUSERNAME=rootDBASSWORD=數(shù)據(jù)依我們目前的知識,需要建表createtable需要改表altertable但是,arave中,不建議用命令手工建表和修改表,而是把對表的操作寫成mgraton遷移文件.然后avave通過遷移文件來操作表所以,數(shù)據(jù)遷移文件就是操作表的語句文為什么用遷移文件,而不直接敲sq操作表便于團隊統(tǒng)一操作表比如你在自己電腦上createtablexxx(),建了一張表但其他幾個程序員,如何和你保持同步?也打開mysq控制臺執(zhí)行一遍?其實就是:對表的操作,都體現(xiàn)在文件上,而不是隨手敲個命令改表出了問題,容易追查責任和回溯上次我們 平臺,從2/29號新關注的用戶信息不能入庫我翻歷史命令時,發(fā)現(xiàn)有人執(zhí)行altertable語句,而且該語句把表的autoicremet屬性去掉了,導致了主鍵復,無法入庫而此人,正是助教而且他錯誤后,把表結(jié)構(gòu)又改了回去,裝做沒事兒人.如果有表遷移文件,責任就好找多了而且,即使出錯,只需要用mrt 工具回退表結(jié)構(gòu)即可pp mmgrtaddpriceto 遷移文件用命令行生成,自己再補齊內(nèi)容兩例:ppp mmgrtaddpriceto 看到如下兩個文件classclassGoodsextendsMgr{public{publicfunction{hem:retegoods,function(Blueprint$table)$tablenrtsid$tablemtm}publicfunction{m::ropgoods}}classclassgoodsextedsMgrtpublicfuctio{Scea::legoods,fuctio(Blueprit$table)}publicfuctiodow{Scea::legoods,fuctio(Blueprit$table)}}我們只需要在 on中補齊對表的操作即可,比如字段,字段類型等遷移文件是一個類文此類中,有2個基本方法,up和dowup()負責建表,加列,dow()負責刪表,減列,遷移文件分創(chuàng)建表和修改表兩種在上一節(jié)中,仔細觀察2個類的方法create=xx表,則該類的up()中調(diào)用Scea::rte()即創(chuàng)建表.table=xx表,則該類的up()中調(diào)用Scem::abe()即修改表.creategoods遷移文件的名字以能說明文件的作用最好creategoods數(shù)據(jù)當遷移文件做好的之后,以下幾個命令,執(zhí)行遷移文件phpartsanmphpartsanmgrate:robackphpartsanmgrate:resetphpartsanmgrate:refreshphpartsanmgrate:statusphpartsanmgrate:nstamigrate:執(zhí)行所有遷migrate--force:強制執(zhí)行的遷移文migrate:rollback**回退到執(zhí)行遷移前的**migrate:reset回退到所有遷移之前的
創(chuàng)建商品表addagetostutable,為學員表添加age字migrate:refresh回退到初始狀態(tài),再次執(zhí)行遷移/docs/5.1/mgrat常見列類型一覽$table>bgcremets(idIncrementngID(prmarykey)usnga"UNSIGNEDBIGINTEGER"equva$table>bgteger(votesBIGINTequvaentforthe$table>biary(dataBLOBequvaentforthe$table>boolea(coreBOOLEANequvaentforthe$table>car(ame,CHARequvaentwtha$table>date(createdatDATEequvaentforthe$table>datemcreatedatDATETIMEequvaentforthe$table>ecalamout,5,DECIMALequvaentwthaprecsonandsca$table>double(lu,15,DOUBLEequvaentwthprecson,15dgtsntotaand8afterthedecmapo$table>eumcoices,[foo,barENUMequvaentforthe$table>float(amoutFLOATequvaentforthe$table>icremets(idIncrementngID(prmarykey)usnga"UNSIGNEDINTEGER"equva$table>iteger(votesINTEGERequvaentforthe$table>jso(optiosJSONequvaentforthe$table>jsob(optiosJSONBequvaentforthe$table>logext(descriptioLONGTEXTequvaentforthe$table>eduteger(umbersMEDIUMINTequvaentforthe$tableeduext(descriptioMEDIUMTEXTequvaentforthe$table>morps(taggableAddsINTEGERtaggableidandSTRINGtaggable$table>ullablesSameasps)exceptaows$table>rememberokeAddsremembertokeasVARCHAR(100)$tablesmllteger(votesSMALLINTequvaentforthe$tableoDltsAddsdeletedatcoumnforsoftde$table>strig(VARCHARequvaentco$table>strig(ame,VARCHARequvaentwtha$table>text(descriptioTEXTequvaentforthe$tabletesuriseTIMEequvaentforthe$table>tiyIteger(umbersTINYINTequvaentforthe$table>tmsaaddedo$tabletsaAddscreatedatandupdatedatcoUUIDUUIDequvaentforthe$table>uuid(id$table>uuid(id常用列修改方法ScScea::beusers,fuctio($table)$table>stri )>Pacethecoumn"frst"nthetabe(MySQLOn>after(luPacethecoumn"after"anothercoumn(MySQLOn>AowNULLvauestobensertedntothecoSpecfya"defaut"vauefortheco>usigSetitegercoumnstoE按MVC的架構(gòu),數(shù)據(jù)庫的操作大部分應放在Mode中但如果不用Mode,我們也可以用arave的DB類操作數(shù)據(jù)庫而且,如果某些極其復雜的sq,用Mode已經(jīng)很難表達,要手寫sq也需要用DB類去執(zhí)行原生sq:ale:aleusers增DB::table(users)>i 插入單DB::table(users)>i isert()方法返回值為true和插入多行(數(shù)組)
獲取操作users表的實例DB::table(DB::table(users)>i[[=>插入后返回主鍵值獲取主鍵值,用isrGed()方DDBtalusers)>iG( 改典型修改Btalusers)>were(id,1)>update([age=>19])相當于squpdateuserssetage=19wereid=1某字段增長或減少DDBtalusers)>were(id,1)>icremet(age);DBtalusers)>were(id,2)>icremet(age,3);DBtalusers)>were(id,3)>decremet(age);DBtalusers)>were(id,4)>decremet(age,3);刪Btausers)>were(id,>,6)查////select*fromusers;DBtalusers)>get();////select*ouserwereid>Btausers)>were(id,>6)//selectouserswereid>Btausers)>select(id )>were(id,>6)//select*ouserswereid=6取出單行,DBtalusers)>were(id,6)注意:,.7章完整的增刪改程序GET/msg/ndex展示留言列GETmsg/add展示表GET/msg/de/ymag6gc刪除留言[GET,POST]/msg/up/g6geyam修改留言按規(guī)劃寫如下路由Route::get(Route::get(g/dex,MsgCorler@dex);Route::get(msg/add,MsgCorollra);Route::post(msg/add,MsgCotrllraost);Route::get(sg/e/{i MsgCotrllr@ou:ma([get,post],g/up{d,MsgCorollru數(shù)據(jù)pp mpp mkmrt createmsgs =編輯遷移文publicpublicfunctionup()em:rtmsgs,function(Blueprint$table)$table>retsid$table>string(title$table>string(content$table>integer(pbt$tablemm}publicfunction{m::ropmsgs}1.執(zhí)行遷移ppartisat發(fā)布表單namespacenamespacepptptrruseApptpCrlrsCnrlruseDB;classsgCnrorextends{publicfunctionadd(){returniwmg.d);}}////mlt>rrgadm<metacharset="utf<h1>laravel添加留言<raction=""tdpot<p><inputtype="text"m=<textareattxtr<p><inputp=sbitvalue="提交r/t發(fā)布頁publicpublicfuctiopost()$rs=D:talemsgs)>isert([title=>$OS[title],cotet=>$OS[cotet]]);retur$rs?OK:fail}提交出錯<iputtype="idde"amtoke"value="<?ppecocsrftoke<iputtype="idde"amtoke"value="<?ppecocsrftoke();okematExceptioiVeryCroke.pplie列表頁publicpublicfuctioidex()$msgs=Btalmsgs)returvwmg.dex,[msgs=$}<<1>所有留言</<td>標題<td>內(nèi)容<td>操作<?ppforeac$sgas${<td><?ppeco$m>title;?><td><?ppeco$m>cote<td><ar/sg/lpeco$mid;?>">刪除<a="/sgu/<?peco$mid;?>">修改<?pp}</刪除頁+跳轉(zhuǎn)功publicpublicfuctiodel($id)if(D:talmsgs)>were(id,$id)>delete(){returredirect(sg/dex}else delerror}}修改m<metacharset="utf<h1>laravel修改留言<raction=""tdpot<p><inputtype="text"am=itevalue="<?phpecho$msg<textareanam=cotentpecho$msg<inputtype="hidden"aetoken"value="<?phpechocsrftoken();<p><inputp=sbitvalue="提交r/tpublicpublicfunction{if(empty($POST))$msg=DBtblmsgs)>where(id,$id)>first();;returnvwm.,[msg>mg)}else$rsB:abmsgs)>where(id,$id)>update([title=>$POST[title],content=>$POST[contentreturn$rs?OK:false}至此,我們已經(jīng)用arave做了一從增刪改查的角度講,此時你可以用arave 做任意了.但是,arave還有很多漂亮的功能沒有用上接下來,繼續(xù)深入學習8章blade模arave有自己的模板引擎,以.blade.pp結(jié)尾.數(shù)據(jù)在Smarty和TP模板中,要把變量assig給模板引擎.smat>assig(title=>今天天氣不錯smat>assig(cotet=>溫度零上13度在bade模板中,不是assig,而是以數(shù)組參數(shù)集中傳遞例$data$data=title=>天氣預報,content今天天氣真不錯,score=>mtrand(40,90),users=>[zhangsan,lisi,wangwureturnvwtestewxx,普通->天氣預@@(express)#注意express@ele(express)#l@edif例@($score>=@ls($score>=l@eunless(除非,和if相反@u@uless($score>=@edufor循@for@for($i=0;$i<10;$i$i<br>@edforforeach循@foreac@foreac($usersas{{$u}}<br>@edforeacforelse循環(huán)是否為@@os([]as@edforelse@clude(@clude(sub模板
包含s下的sub.blade.p頭部和尾部都一樣,就中間的左右內(nèi)容不一樣用iclude模板來做,是把頭尾拿出來eader,footer拿出來然后@clude(eader),clude(footer)需要@clude兩次,而繼承則是把eader/footer公共框架寫在父模板中,繼承一次父模板模板繼承的概念和面向?qū)ο蟮睦^承非常相似,看下例 父模板paret.blase.p <<metacarset="utf<divstyle="backgroud:gray;">@sct(leftside)tisisparetleft@sow<divstyle="backgroud:gree;">@sct(rigtside)tisisparetrigt@sow</父模板中有2個方法leftside,rig子模板繼承父模板,并且寫leftside,rigtside方法,則可 子模板soblade.pp>@exteds(paret)@sec(leftside)soleft@e@sec(rigtside)sorigt@paret@e,同時,子類rigtside方法中的父類方法.因此,顯示結(jié)果為 父模板paret.blase.p <<metacarset="utf<divstyle="backgroud:gray;">soleft<divstyle="backgroud:gree;">sorigtparetrig</ 為防止blade模板去解析,前面加@符號解析.例r模板輸出已自動防[[code=><script>alert(1)</script>輸出到vew;/s如果確實不需要實體轉(zhuǎn)義,可以加!!.(1個大括號,不是兩個例例9章強大的 Model放在哪兒?命名空間是什么mode文件默認放在 下,命名空間是 ,但請注意命名空間 路徑保持一致Model類叫什么?繼承自誰在arave中約定(非強制),表名叫xxs,復數(shù)形式.如用戶(user)表叫users,郵件(ema)表叫類和表名有關系,一般表名去掉s,即為Mode的類名所以users表的Mode類叫classs表的Mode類叫 ,注意首字母大寫繼承自luate\Database\Eloque\o以msgs表對應的Msg.pp文件為例,典型的Mode如下namespacenamespaceusettclassMsgextendsd{}自動生成Mode可以手寫,可以也用artsan命令行工具生成例:ppartisak:odppartisamae:dMsgm生成Mode同時執(zhí)行m實例化$$odnewApp\Xxx得到Xx表的Md且不與表中任何行對應$mde=Xxx::find($id);//得到Xx表的Mod且與$id行數(shù)據(jù)對應增publicpublicfunctionadd()$msg=new$msg>title=$POST[title$msg>content=$POST[title];return$msg>save()?OK:fail;}查查單行fnd()與f////按idgid($id//按id//按where條件Msg::where(id,>,3)查多行a()和////無條件查所有行.select列1,列2rgMg::a列1,列2]);////Msg::were(id,>,2)>get([列1,列2改publicpublicfunction{if(empty($POST))$msg=f$returnviwsg,[msg>}else$msg=f$$msg>title=$POST[title$msg>content=$POST[content];return$msg>save()?OK:fail}}刪publicpublicfunctiondel($id)$msg=f$return$msg>delete()?ok:fail}復雜排序//select...whereid>2orderbyiddesc;//select...whereid>2orderbyiddesc;Msg::where(id,>,2)>orderBy(id,desc)>get()**限制條目////select..whereid>2orderbyiddesclimMsg::where(id,>,2)>orderBy(id,desc)>skip(2)>take(1)統(tǒng)Msg::avg(idMgmnidg:maxidM:umid分組(錯Goods::groupBy(Goods::groupBy(catid)>get([catid,avg(price)])//想要效果:selectcatid,avg(price)rogoodsgroupbycat//實際效果:select`catid`,`avg(price)`rogoodsgroupbycat//原因:laravel在字段名兩邊用反引號包住了分組(對////用DB::raw()方法,raw是",不修飾的"意Goods::groupBy(catid)>get([catid,DB::raw(avg(price))])更復雜的查詢表達式/docs/5.1/quermodel的約表名的約定默認表名為ol名+s,可能通過的mode類的table屬性來指定表名.列classclassXMdeextendsoeprotectedprotected$table=rbeNa}d的約定Mode默認認為,每張表都有一個叫做id的主鍵,你可以通過rrKey屬性來指定主鍵列名classclassXxdextendsde{protectedpriryKe=Xxid} at字段Mode默認有這2個字段,且在更新行時,會自動幫你更新這兩個字段.如果不想這樣,甚至不想要這2個字段,mode的sms屬性設為classclassxMdextedso{public$tta=}10章Request對Request對上放置著此次請求的全部信息.如請求方式請求路徑(后的部分)請求cooke等諸多信息,都存到的Request對象10.1Request對另:如果方法中有路由器綁定的參數(shù),不受影響:RouteRoute::get(/del/{$id}publicfunctiondel(Request$request,$id)//$id參數(shù)雖然到第2個參數(shù)去了,但不會受影響}利用Request對象修改留言例,用Request對象改進留言修改功能useusetRqupublicfunctionup(Request$request,{if(ept(POST))$msg=f$returnviwsg,[msg>}elseprintr($request>all()$msg=f$$msg>title=$request>input(title);//ipPOS參數(shù) 屬$msg>uti=$request>input(uti,im());給個默return$msg>save()?OK:fail}}利用Request對象上傳////mlt>rrgadm<metacharset="utf<h1>laravel添加留言<<raction="<?phpechourl(msg/add);?>"tdo<p><inputtype="text"m=<textareattxtr<p><inputtype="file"aep<p><inputp=sbitvalue="提交r/t發(fā)布頁publicpublicfuctiopost(Request$request)$request>file(pic)>move(/pat/o/gexxj}laravel與TP對是URL與控制器的路由器的區(qū) arave的路由簡單,靈活,指向控制器的方法.而TP的路由是由模塊/控制器/方法這種規(guī)律生成.準確的說,TP不能是URL與控制器的而TP的"規(guī)則路由","正則路由",只是URL的一個別名甚至是跳轉(zhuǎn),不是真正的路由而且路由只能在模塊下發(fā)揮作用,容易出錯URLURLROUTERON=>true,URLROUTERULESgoods/:goodsid=>Index/goods)假如上例寫在Home模塊下,是指ooe/dex/goods/goods整體設計的區(qū)別arave接管了的全過程,數(shù)據(jù)庫+MVC+錯誤處理而tp,不包含數(shù)據(jù)庫Balcols不在tp管理范圍tikppMVCarave更像一個全自動車床,輸入原料,得到成品.,$,$設計思想的區(qū)別arave大處省流程",tp"小處省字母例而tp則,$,$有本質(zhì)變化TP下,和純手寫博客時的思路,沒有根本變化,仍是接$GE,$OS,$而arave,則是接收參數(shù)的方式都已經(jīng)截然不同 >XxCotroller>metTP提供的D(),M()I(),等有改變你的工作方式,只是讓略省幾個字母.arave則從流程和方式上,改變和簡化工作.
,仍是$
仍需要手動接收,I(get.id相比$GE面向?qū)ο蟮膮^(qū)別通過文件上傳體現(xiàn)的比較明顯,arave是把"WEB功能封裝在對象里",TP則是"封裝對象幫你做web功能模板的區(qū)別arave的模板語法比TP語法簡arave提供了系列好用的函數(shù),大致分為以下幾類./docs/5.1/hepers各舉幾例array把數(shù)組拆散組成一維數(shù)組array$array$array=arraycollapse([[1,2,3],[4,5,6],[7,8,//[1,2,3,4,5,6,7,8,strlt取字符前幾位strlt$value$value=strt eHframeworkforwebartisas., eHstr_random()$stri$strig=strraom(//8位隨機字符實體轉(zhuǎn)ececoe(<tl>oo<tl//<tltoo&ttlt$pat=apppatapppat$pat=apppatapppat也可以用于獲取也可以用于獲取 下的其他文件的路徑$pat=apppat(Http/Corlls/Ctroller.ppbasepat()返回項目的絕$pat=basepat$pat=basepat(vedor/bi也可以$pat=basepat(vedor/bi$pat=cofigpatcofig$pat=cofigpatcofigpat$pat=publicpatpublicpat()返回項目的公共文件所 (js,css等$pat=publicpat生成規(guī)范url(url(foo/bar);url(/,[cat,3,page,4]); actio配合路由器,生成規(guī)范actio////如果路由器沒定義到XxColler@meod的路徑,則會報錯actio(XxCotlr@mod);ecoactio(MsgCorllr@e,[3,page退回上returretur加密$password$password=bcrypt(mysecretpasswordcoco$value$value=cofig(ap.tze$value=cofig(ap.tze,$default)沒讀到配置,則返回csrftoke生成防跨域提交csrftoke$toke$toke=csrftokecsrf生成防跨域提交的隱csrf{!!{!!csrffield()打印變量并終止執(zhí)行,一般調(diào)試時定returreturredirect(/ome得到當前的request對$request$request=$value=request(key,$default=章 項目開p2pe租寶,人人貸商業(yè)模式在豪華地段,租最豪華,招模特做前臺,一水的170,大長腿資本,,再到敬老院雇一病老頭做(關鍵.市場宣傳,承諾高額回報,利率15%起,我說的是月利息沒客戶怎么辦?在央視黃金時段砸.線下銷售,銷售,狂拉付不出利息怎么辦?沒事,用下一個客戶的本錢付上個客戶的利息當客戶本金積累到億,時的死.我們的錢哪去了鬼知道!基本功能:把點點貸模板解壓放在<roe>/rorcsvew下Route::get(test/idex,fuctio(){returew/idexRoute::get(test/idex,fuctio(){returew/idex并把idex. 命名為idex.blade.p瀏覽器f12打開控制臺,以commo.css為例 mo.css發(fā)現(xiàn)頁面可以輸出,瀏覽器f12打開控制臺,以commo.css為例 mo.css這是因為當 /test/idex,而源碼中<liktype="text/css"rel="styleseet" mo.所以形成了 .css的請求我們把所有模板的css,mage路徑,都換成相對于的根 /就可以避免此問題.批量替換所有模板css/-->/css/,ge/-->ige/再次刷新,頁面已正常顯示用戶表:字類說uprmary主str用戶str電子郵mobstr號strregt時astog上次登陸時記錄用戶cook借款表:projects用到時再分析投資表:is收益表還款表:s流水表:ls12.3遷移文件////userspublicfunction{em:rtusers,function(Blueprint$table)$table>rtsuid$table>string(name$table )$table>string(ol$table>string(password,$tablerebr$table>integer(rgtim$table>integer(lastlogin}13認證 自帶了用戶認證與類,可以方便的幫我們完成認證與主要用到App\Http\Cotrollers\Aut\AutCotroller以及usersarave要求users表至少有如下字段:ema字password60個長度remember_token100個長度由于我們的uesrs表主鍵叫uid,且沒有createdat,updateat字段因此,按Mode的約定,做如下說明protectedprotected$rmayKe=uid;public$tetap=false;AuthController類的工作原AutCotroller類有幾個要屬性,意義如下(如果需要,你可以修改這幾個屬性值////依據(jù)版本5.1.33classAuthController{protected$username;#與password字段配合登陸的字段m mie都可protected$redirectPath=/home;#登陸成功后的跳轉(zhuǎn)方向protectedrdretAtrogo=/;#默認退出后跳轉(zhuǎn)頁protected$loginPath=auth/login;#默認登陸URL}準備路由與模板////RgiroRoute::get(auth/register,t\thotrrtte);Route::post(auth/register,AtAtorlr@tRgit);//AthentitioRoute::get(auth/login,At\Athtrrt);Route::post(auth/login,AtAthotror@otog);Route::get(auth/logout,t\AtCorlrgLgo);在roersorv下建立 把register.l和logi.l放入 下并命名為register.blade.pp和logi.blade.pfrmethPOS"action="{{url(auth/register csrf 用戶名:<inputtype="text"nme"aevalue="{{old(name:<input "n"value="{{):<inputtype="text"a"o:<inputp=pasrd=pr確 :<inputtp=pswrdamepaorr 注意,確 必須叫passwordonrmio,才能自動驗證<buttontp= r用戶的號為空,如下 ol追蹤Aut\AutCotroller類的源碼protectedprotectedfunctioncreate(array{returnname=>$data[name=> password=>bcrypt($data[password}leprotectedprotectedfunctioncreate(array{returnname=>$data[name=>$data[ mi=>$data[mi],password=>bcrypt($data[password}protected$fillable=[ame,password];這個屬性代表,外界對Userl批量賦值時protected$fillable=[ame,password];這個屬性代表,外界對Userl批量賦值時,ol接收的字段:protectedprotected$fillable=[ame, ,obl,password];再次,此時數(shù)據(jù)庫有ole數(shù)據(jù)了 ol frmethdPOS"action="{{url(auth/login csrf 用戶名:<inputtype="text"nme"aevalue="{{old(name:<inputp=pasrd=pr<inputtype="checkbox"a=remr"<buttontpe=su登陸r在arave中,如果表單校驗失敗,會自動傳遞一個$errors變量到w中.在<ojcrocsvwsa/logiblade.pp中添加一{{pritr($errors)}},并再次登陸,會看到錯誤信息ArrayArray( ]=>Array([0] fieldisrequired.這是因為:arave框架默認 +password字段來檢測用戶并登陸回頭看13.2章節(jié),修改Aut\AutCotroller的屬性如下:protected$userame=ame;即,指定arave以'用戶名'和 '來登陸,即可tt=>tt=> ,password=>pswr]Ah:tmt(name=>nampassword=>$password,active=>Aut::cAut::cAAtlgot14章借款功借款表字類說pprmary主u用戶ustr用戶金mobstrttstr項目名tny利率(百分比tny還款期限,月為單tny0審核中,1招標中,2還款中,3結(jié)rev已招標pubt項借款附屬信息表字類說aprmary主u用戶up項目pttstr項目名reastr真tnyenum('男','女satny千為單jobcstr工作城str用戶描////projects表遷移文publicfunction{em:rtprojects,function(Blueprint$table)$tablenrtspid$table>integer(uid$table>string(name$table>integer(money$table>string(ol$table>string(title$table>tinyint(rate$table>tinyinteger(hrange$table>tinyinteger(status);#0審核中,1招標中,2還款中,3結(jié)$table>integer(recive$table>integer(pbt}//atts表遷移文publicfunction{em:rtatts,function(Blueprint$table)$table>retsaid$table>integer(uid$table>integer(pid$table>string(rana$table>tinyinteger(age$table>enum(gender,[男,女$table>tinyinteger(salary$table>string(jobcity$table>string(udesc}準備路由器和Route::Route::get(jie,Protror@i);Route::post(jie,rootroro);publicfunction{ieoyu}publicfunction{returninsertintoDB生成申請牽涉到2張表,projects,我們?yōu)槠谏蒑odephpphpartisanmedeProphpartisanmedeclassProextendsel{protected$table=projects;protectedprimryK=pid;publictimap=false;protected$fillable=[money,age,ml}classAttextendsel{protectedpriryKe=aid;publictimap=false;}publicpublicfunctionie(Rque{returnvwyeku}publicfunctionjiP(Rq$request)//$rs=Pro::create($request$pro=new$pro>age=$request$pro>money=$requesto$promole$request$prouti=($rs=$pro//開始寫入atts附屬表信$att=new$att>uid=$user$att>pid=$pro$attvarr}在上一節(jié)中,發(fā)布的roject信息沒有用戶的uid,ame信息$user=$user=$request我們需要從登陸信息中拿到這兩條信息,并寫入roject中.arave$user=$user=$request通過ur實例,可以拿到當前登陸用戶的信息,publicpublicfunctionjiP(Rq$request)//$user=$user=$request$pro>uid=$user$pro>name=$user} 項目審路由器RouteRoute::get(prolist,ekotrorro控制器//file//file/app/p/ror/ekror.hpublicfunctionprolist(){$pros=Pro::orderBy(pid,desc)>get();returnvwprolist,[pros=>$pros]);}vfrls($prosas<tdclass="f">{{$p<td>{{date(Y/m/dH:,$p}<<tdclass="tr"><span>{{$pap<tdclass="tr">{{$p>o/<tdclass="tr">{{$pmlt<td@if($p>status==待審@si($p>status==招標@si($p>status==還款@si($p>status==已結(jié)en<tdclass="l"><ahref="{{url(check,[$p>pid])}}">審核<divcas=jiud=rMg>暫無記錄</div>d路由器RouteRoute::get(check/{pid},kotror@控制器////審核項目,主要是修改projects表和attspublicfuctioceck($pid)$pro=ro::fi$att=t::ere(pid,$pid)emt($o)returredirect(/prolist}returewsee,[pro=>$pro,att}路由器RouteRoute::post(check/{pid},Ckorolr@cc控制////審核數(shù)據(jù)updatepublicfuctioceckost(Request$req,$pro=ro::fi$att=t::ere(pid,$pid)emt($o)returredirect(/prolist}$pro>title=$req$pro>rage=$req>ra$pro>rate=$req>rate;//百分$pro>status=$req$att>realame=$req>real$att>geder=$req>ge$att>udesc=$reqif($pro>save()&&$att>save(){returredirect(/prolist}else error}}16章投資功投標表字類說bprmary主u用戶up項目pttstr項目名投標金pubt投標時////bids表遷移文publicfunction{em:rtbids,function(Blueprint$table)$tablenrtsbid$table>integer(uid$table>integer(pid$table>string(title$table>integer(money$table>integer(pbt}16.2投publicpublicfunctiontouziPost(Request$request,$pid)$pro=$bid=new$user=$bid>uid=$user$bid>pid=$pro$bid>title=$pro$bid>money=$request>input(vamount$bid>tim=($bid>save();//寫入投資信//修改項目收到的金$pronretrecive,$bido//如果投標已滿,則改此項目的狀態(tài).if($pro>money==$pro>recive//$pro>status=//$pro$thistozion($r//交給專門的方法來處}echosucc}投標完成后,借款人每月要還"本息",投資人每天要收利息因此,.還款表字類說hprmary主u用戶up項目pttstr項目名每月還款金賬單tny是否已預收益表字類說tprmary主u用戶up項目pttstr項目名每天的收利息截止//還//還款賬單表移文publicfunction{em:rthks,function(Blueprint$table)$table>rtshid$table>integer(uid$table>integer(pid$table>string(title$table>integer(amount$table>date(paydate}//tasks表遷publicfunction{em:rttasks,function(Blueprint$table)$tablenrtstid$table>integer(uid$table>integer(pid$table>string(title$table>integer(amount$table>date(enddate}protectedprotectedfunctiontoziDonro//先修改此招標項目的狀$pro>status=$pro////為借款人,n個月還款周期,生成N條還款記錄$amount=($pro>money$pro>rate/1200 ($pro>money/$pro>hrange);//$row=[uid=>$pro>uid,pid=>$pro>pid,title=>$pro$row[amount]=o$row[status]=$today=date(Ymdfor($i=1;$i<=$pro>hrange;$i=1)$paydate=date(Ymd,tte($imt$row[paydate]=$paydate;B:abhks)inser(rw)}}protectedprotectedfunctiontoziDonro//3.為投資者,生成收益打款任$bids=d:rpid,$pid)$row=$row[pid]=$row[title]=$pro$row[enddate]=date(Ymd,rtm({$pro>hrange}mtforeach($bidsas$bid)$row[uid]=$bid$row[amount]=$bid>money$pro>rate/36500;B:abtasks)insrtrw)}}每天收益表主主prmaryg說類字u用戶up項目pttstr項目名每天的payt收益日////growsem:rtgrows,function(Blueprint$table)$table>nrtsgid$table>integer(uid$table>integer(pid$table>string(title$table>integer(amount$table>date(pim//rwtrrppublicfunctionrun(){$today=date(Ymd$tasks=DBtabtasks)>whrenddate,>=,$today)foreach($tasksas$t)$t>atim=$t=(array)$t;unset($t[tid]);unset($t[enddate]);Dtablegrows)}}publicpublicfunctionmyd$hks=B:tbhks)>get();returniwmyzd,[hks=>$hks]);}@orah(kas<tdclass="f">{{$h<tdclass="tr"><span>{{$h<tdclass="tr">{{$haot}<tdclass="tr">{{$h<td@if($h>status==<ahref="#">立即還款</a>已enpublicfunctionmtz$user=$bids=dwrbids.uid,$user>uid)>rIstatus,>join(projects,bids.pid,=,projects.pid)>get([ ,projects.status@forabes<tdclass="f">{{$b<<tdclass="tr"><span>{{$b<tdclass="tr">{{$b>o/<tdclass="tr">{{date(Y/m/d,$b>}<td@if($b>status==@si($b>status==2)@si($b>status==enpublicpublicfunctionmyy($user=$grows=Dtlgrows)>where(uid,$user>uid)>orderBy(gid,desc)returnvewmysy,[grows}@foreach($growsas<tdclass="f">{{$g<tdclass="tr"><span>{{$g<tdclass="tr">{{$g>amout10元<tdclass="tr">{{$gpt<td17章中間中間件可以任意穿插在"請求-響應"過程中,更直接的說,可以插入到XxColler@eod()方法前或后去執(zhí)行以影響執(zhí)行的結(jié)果,從而讓你的代碼更加靈活pppartisamke:mlewar Mw生成的中間件>att/Ml MlrnamespacenamespaceApHttpMddwar;uselsre d{/ndl i@paramIlmneHpqes$request@paramlsr$next@returned/publicfunctionhandle($request,Csr{echoIilsentan toyou;return$next($request);}}////網(wǎng)上(包括官網(wǎng))的例子全是錯RouteRoute::get(home,[uses=>Mgotroromddewr=>[Apdr Mddlr]]源碼在下面//file://file:lrvl/ramrrclmit/oig/otr.pprotectedfunctionatonrnotror$ato{if($actioninstanceof{return}returnis isstring(isset($action[uses])?$action[uses]:}17.3用中間件檢測登中間件可以在單個路由上RouteRoute::get(/,[ddewr=>[Appdr Mdlwr],uses=>IdCorolr@id中間件也可以在全局上////全局路由是在<prjt>/App/tpkr.pp/TheapplicationsglobalHTTPmdler@var///例:這是系 的幾個全局路protectedmddler=IumitFoutotMrChkFrMteacMd:MrEr Ilint lrA Rss:sItMdttoali\i\lr\Srrrscptdrr中間件也可以在控制器XxControllerXxControllerprotectedmidlwr=[AppMlewreAthentict}17.4后發(fā)郵安裝ema類opsrequiret路由器Route::Route::post(auth/register,mddewr=>AppMddridlwruses=>AtAtortt]//Mlewr dlwuseNt\Ml\MesgeuseNrpublicfunctionhandle($request,Csr{$rs= 后發(fā)郵//$request>user()> //$request>user()> if($request>user()){$i=newstr$i>sromown>addTo($request>user() >setSubject(試試我的中間件>setBody("真好用>mil=newmMlr(rrhost=>,username=>superkeysir,#你的163用戶名password=>adi#你的郵箱$malena}return17.5指定某個路由不用csrf檢og/excudng-routes-from-the-csrf-mddeware-n-arave-5.118章支詳見"支付筆記19章功能細在vew層,判斷用戶是@@f(!A<aclass="fff"title="登錄"rel="l ref="{{url(aut/logi)}}">登錄<aclass="fff"title="l"rel="olowref="{{url(aut/register<emclass="ffffs12">您好 ref="#"rel="oflloclass="ello">{{Aut::user()><aref="{{url(aut/logout)}}"id="logiOclass="ello">退出<dt><aclass="txoe"title="賬戶中心"rel="ofllotarget="blak"ref="/o"賬戶中心@e以'我的賬單'功能為例,不分頁是這樣查詢的:al ks)>如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026西藏山南加查縣文旅局公益性崗位招聘1人考試備考題庫及答案解析
- 2026黑龍江哈爾濱工業(yè)大學電氣工程及自動化學院儲能與電力變換研究所招聘筆試備考試題及答案解析
- 2026廣東省水利水電第三工程局有限公司校園招聘備考考試題庫及答案解析
- 2026廣東佛山市南海區(qū)人民醫(yī)院后勤崗位招聘1人(神經(jīng)內(nèi)科文員)備考考試試題及答案解析
- 迪士尼樂園闖關問答
- 2026年山東工程職業(yè)技術大學高層次人才招聘備考考試試題及答案解析
- 2026一季度浙商銀行舟山分行社會招聘備考考試題庫及答案解析
- 寧國工會活動策劃方案(3篇)
- pccp開挖施工方案(3篇)
- 吳江端午活動策劃方案(3篇)
- 2024年執(zhí)業(yè)藥師《藥學專業(yè)知識(一)》試題及答案
- 統(tǒng)編版語文一年級上冊無紙化考評-趣味樂考 玩轉(zhuǎn)語文 課件
- 高壓氧進修課件
- 2025年第三類醫(yī)療器械經(jīng)營企業(yè)質(zhì)量管理自查報告
- 2025無人機物流配送網(wǎng)絡建設與運營效率提升研究報告
- 人工智能倫理規(guī)范
- 校園禁毒管理辦法
- 飼料供應循環(huán)管理辦法
- 保險公司安責險
- 水泥穩(wěn)定碎石配合比驗證
- 尿路感染教學查房
評論
0/150
提交評論