最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Laravel5.5仿ThinkPHP的pathinfo传参示例

来源:动视网 责编:小采 时间:2020-11-03 18:15:27
文档

Laravel5.5仿ThinkPHP的pathinfo传参示例

Laravel5.5仿ThinkPHP的pathinfo传参示例:PS:目前所能找到的方法,希望不会被大佬们鄙视...1、我的nginx配置:#test6 admin server { listen 80; server_name admin.test6.local; root "d:/data/www/test6/public/admin"; index index.htm
推荐度:
导读Laravel5.5仿ThinkPHP的pathinfo传参示例:PS:目前所能找到的方法,希望不会被大佬们鄙视...1、我的nginx配置:#test6 admin server { listen 80; server_name admin.test6.local; root "d:/data/www/test6/public/admin"; index index.htm

PS:目前所能找到的方法,希望不会被大佬们鄙视...

1、我的nginx配置:

#test6 admin
 server {
 listen 80;
 server_name admin.test6.local;
 root "d:/data/www/test6/public/admin";
 index index.html index.htm index.php;
 error_page 404 /404.html;
 location = /404.html {
 return 404 'Sorry, File not Found!';
 }
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root /usr/share/nginx/html; # windows dir
 }
location / {
 try_files $uri $uri/ /index.php?$query_string;
}
 
 location ~ /Uploads/.*.php$ {
 deny all;
 }
 location ~ .php/ {
 if ($request_uri ~ ^(.+.php)(/.+?)($|?)) { }
 fastcgi_pass 127.0.0.1:9000;
 include fastcgi_params;
 fastcgi_param SCRIPT_NAME $1;
 fastcgi_param PATH_INFO $2;
 fastcgi_param SCRIPT_FILENAME $document_root$1;
 }
 location ~ .php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
 location ~ /.ht {
 deny all;
 }
 }

2、路由 /routes/admin.php

PS:目前用的方法是这样的

Route::get('/shop/goods_list', 'ShopGoodsController@goods_list');
Route::get('/shop/goods_list/page/{page}/limit/{limit}', 'ShopGoodsController@goods_list');
Route::get('/shop/goods_list/page/{page}/limit/{limit}/keyword/{keyword}', 'ShopGoodsController@goods_list');

3、基类 appHttpControllersAdminPubliBaseController.php

PS:请别吐槽那个Publi,我也很无奈啊..

<?php
 
namespace AppHttpControllersAdminPubli;
 
use IlluminateFoundationBusDispatchesJobs;
use IlluminateRoutingController;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateFoundationAuthAccessAuthorizesRequests;
use IlluminateHttpRequest;
class BaseController extends Controller
{
 use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
 
 //构造函数
 public function __construct() {
 $this->middleware(function ($request, $next) {
 //未登录的处理
 //$this->dosomething($request);
 //仿TP用pathinfo传参
 $path=$request->path();
 $this->pathinfo=$this->path_to_array($request,$path);
 return $next($request);
 });
 }
 
 /*路径转数组
 *输入路径,如:http://admin.test6.local/shop/goods_list/page/3
 * 返回数组,如:$array['page']=3; $array['keyword']='somekeyword';
 */
 public function path_to_array(Request $request,$path=null){
 $array=array();
 if(strpos($path,'/')!==false){
 $arr=explode('/',$path);
 foreach($arr as $k=>$v){
 if($k>0&&($k%2==0)){
 $array[$v]=$arr[$k+1];
 }
 }
 }
 if(count($array)>0){
 return $array;
 }
 }
 
}

3、控制器 appHttpControllersAdminShopGoodsController.php

namespace AppHttpControllersAdminShop;
use AppHttpControllersAdminPubliBaseController;
use IlluminateHttpRequest;
class GoodsController extends BaseController {
public function goods_list(Request $request){
//获取参数
 $page=1;
 $keyword='';
 //当前页
 if(is_array($this->pathinfo)){
 //当前页
 if (array_key_exists("page",$this->pathinfo)) {
 $page=$this->pathinfo['page'];
 }
 //关键词
 if (array_key_exists("keyword",$this->pathinfo)) {
 $keyword=$this->pathinfo['keyword'];
 }
 }
 dump($page);
 dump($keyword);
 exit;
}
}

推荐:laravel教程

文档

Laravel5.5仿ThinkPHP的pathinfo传参示例

Laravel5.5仿ThinkPHP的pathinfo传参示例:PS:目前所能找到的方法,希望不会被大佬们鄙视...1、我的nginx配置:#test6 admin server { listen 80; server_name admin.test6.local; root "d:/data/www/test6/public/admin"; index index.htm
推荐度:
标签: php 参数 示例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top