Heim > PHP-Framework > Laravel > Hauptteil

Laravel5.5 imitiert das Pathinfo-Parameterübergabebeispiel von ThinkPHP

藏色散人
Freigeben: 2020-03-28 09:00:32
nach vorne
2824 Leute haben es durchsucht

Laravel5.5 imitiert das Pathinfo-Parameterübergabebeispiel von ThinkPHP

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;
        }
   }
Nach dem Login kopieren

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');
Nach dem Login kopieren

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[&#39;page&#39;]=3; $array[&#39;keyword&#39;]=&#39;somekeyword&#39;;
     */
    public function path_to_array(Request $request,$path=null){
        $array=array();
        if(strpos($path,&#39;/&#39;)!==false){
            $arr=explode(&#39;/&#39;,$path);
            foreach($arr as $k=>$v){
                if($k>0&&($k%2==0)){
                    $array[$v]=$arr[$k+1];
                }
            }
        }
        if(count($array)>0){
            return $array;
        }
    }
 
}
Nach dem Login kopieren

3、控制器 \app\Http\Controllers\Admin\Shop\GoodsController.php

namespace 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=&#39;&#39;;
        //当前页
        if(is_array($this->pathinfo)){
            //当前页
            if (array_key_exists("page",$this->pathinfo)) {
                $page=$this->pathinfo[&#39;page&#39;];
            }
            //关键词
            if (array_key_exists("keyword",$this->pathinfo)) {
                $keyword=$this->pathinfo[&#39;keyword&#39;];
            }
        }
        dump($page);
        dump($keyword);
        exit;
}
}
Nach dem Login kopieren

推荐:laravel教程

Das obige ist der detaillierte Inhalt vonLaravel5.5 imitiert das Pathinfo-Parameterübergabebeispiel von ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage