Thinkphp5.0快速入门笔记(2)
?
學習來源與說明
https://www.kancloud.cn/thinkphp/thinkphp5_quickstart
測試與部署均在windows10下進行學習。
?
示例建立新的模塊和控制器
在application模塊下,建立新的模塊,取名為new_controller,則建立新的文件夾,取名new_controller,然后在之下建立文件夾controller,模塊在controller之下創建,建立模塊blog,則創建Blog.php如圖所示。
Blog.php中的內容如下:
<?php namespace app\new_controller\controller; class Blog {public function get($id=10){return '查看id=' . $id . '的內容';}public function read($name){return '查看name=' . $name . '的內容';}public function archive($year, $month){return '查看' . $year . '/' . $month . '的歸檔內容';} }其中的namespace app\new_controller\controller中,new_controller和創建的模塊(目錄)一致,
其中的class Blog中,Blog控制器和創建的文件Blog.php一致。
而控制器中可訪問的方法即為public function部分。
?
ThinkPHP的URL訪問
URL訪問的完整路徑為:
http://serverName/index.php/模塊/控制器/操作。
例如訪問:http://127.0.0.1/index.php/new_controller/blog/get/id/4(和上一段中的配置有關系)
另外說明:控制器和操作名不區分大小寫。如:http://127.0.0.1/index.php/new_controller/BLOG/GET/Id是合法的。
可設置:如果希望嚴格區分大小寫訪問。// 關閉URL自動轉換(支持駝峰訪問控制器)'url_convert' => false(application中的config.php)
?
URL傳遞參數
訪問:http://127.0.0.1/index.php/new_controller/blog/get/id/4
對應到了new_controller模塊,blog控制器,get方法,id參數設置為4進行傳遞。
效果如下:(不傳遞參數默認id10傳遞)
訪問:http://127.0.0.1/index.php/new_controller/blog/archive/year/2019/month/12兩個參數傳遞。
當設置application下的config.php文件中的約92行處的url_param_type為1,則參數傳遞變為:http://127.0.0.1/index.php/new_controller/BLOG/Archive/2019/12。
效果如下:
?
隱藏URL中的index.php
原始地址為:http://serverName/index.php/模塊/控制器/操作。這里的index.php是指代根目錄中public下的index.php文件,其內容指定了application路徑
隱藏index.php是否需要,可以先試試直接去掉index.php,如:http://127.0.0.1/new_controller/blog/archive/year/2019/month/12,訪問成功則OK。
而入門教程中認為:在apache中,需要.htaccess 文件下寫入以下代碼完成:(其它的類型的都在教程里了)
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>URL路由縮減
在application下的route.php定義了路由信息,如修改其為如下:
<?php return ['__pattern__' => ['name' => '\w+',],'[hello]' => [':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']],':name' => ['index/hello', ['method' => 'post']],],'blog/:id' => 'new_controller/blog/get/', ];即增加了一行路由信息,那么訪問:http://127.0.0.1/blog/123,即等價于訪問:http://127.0.0.1/new_controller/blog/get/id/123。效果如下:
?
更改以上代碼中第10行為:
'blog/[:id]' => 'new_controller/blog/get/',則id參數的傳遞可以成為可選,則訪問地址http://127.0.0.1/blog/正常輸出不報錯,否則報錯。
針對index模塊(以上都在說new_controller模塊),則路由中可以省略為:
'blog/[:id]' => '/blog/get/',默認index模塊,直接寫了控制器。index/blog/get/
路由規則
如:'hello/[:name]' => ['index/hello', ['method' => 'get', 'ext' => 'html']],
定義了路由規則限制了必須是get 請求,而且后綴必須是html 的,
路由簡化
相同的部分路由可以簡化,如以下路由信息:
'[blog]' => [ ':year/:month' => ['blog/archive', ['method' => 'get'], ['year' => '\d{4}', 'month' => '\d{2}']], ':id' => ['blog/get', ['method' => 'get'], ['id' => '\d+']], ':name' => ['blog/read', ['method' => 'get'], ['name' => '\w+']], ],?
可以簡化為:
'[blog]' => [ ':year/:month' => ['blog/archive', ['method' => 'get'], ['year' => '\d{4}', 'month' => '\d{2}']], ':id' => ['blog/get', ['method' => 'get'], ['id' => '\d+']], ':name' => ['blog/read', ['method' => 'get'], ['name' => '\w+']], ],?
其它
在__pattern__ 中定義的變量規則我們稱之為全局變量規則,
同時定義了全局規則和局部規則的話,當前的局部規則會覆蓋全局規則
剩余復雜路由見說明書。
?
轉載于:https://www.cnblogs.com/bai2018/p/11301938.html
總結
以上是生活随笔為你收集整理的Thinkphp5.0快速入门笔记(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c 语言 文本处理范例
- 下一篇: 关于首屏优化