您的位置:首页 > 编程语言 > PHP开发

Laravel5.5仿ThinkPHP的pathinfo传参

2018-03-29 16:07 537 查看

先看效果
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', 'Shop\GoodsController@goods_list');
Route::get('/shop/goods_list/page/{page}/limit/{limit}', 'Shop\GoodsController@goods_list');
Route::get('/shop/goods_list/page/{page}/limit/{limit}/keyword/{keyword}', 'Shop\GoodsController@goods_list');3、基类 \app\Http\Controllers\Admin\Publi\BaseController.php
PS:请别吐槽那个Publi,我也很无奈啊..<?php

namespace App\Http\Controllers\Admin\Publi;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\Request;
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、控制器 \app\Http\Controllers\Admin\Shop\GoodsController.phpnamespace App\Http\Controllers\Admin\Shop;
use App\Http\Controllers\Admin\Publi\BaseController;
use Illuminate\Http\Request;
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;
}
}

觉得犀利的要点赞+关注哈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息