2017-09-18 42 views
0

這是我的主要索引文件我希望當我在瀏覽器中寫入它時加載關於頁面但它失敗。Php路徑不會改變瀏覽器欄中的效果

<?php 


    $database = require 'core/bootstrap.php'; 


    require Router::load('routes.php') 
    ->direct(Request::uri()); 

?> 

這是我routes.php文件文件

<?php 

$router->define([ 

    '' => 'controllers/index.php', 
    'about' => 'controllers/about.php', 
    'about-culture' => 'controllers/about-culture.php', 
    'contact' => 'controllers/contact.php' 
]); 

?> 

這是我的路由器文件

<?php 

    class Router 
    { 
    protected $routes = []; 

    public static function load($file) 
    { 
     $router = new static; 
     require $file; 
     return $router; 
    } 

    public function define($routes) 
    { 
     $this->routes = $routes; 
    } 

    public function direct($uri) 
     { 
      if(array_key_exists($uri , $this->routes)) 
      { 
      return $this->routes[$uri]; 
      } 
      throw new Exception('No Routes defined for this URL'); 
     } 
    } 
?> 

我不`噸知道什麼是錯誤在這裏,我想很多,並觀看教程,並做到完全一樣,但我沒有顯示輸出。

require Router::load('routes.php') 
     ->direct(Request::uri()); 
當我寫只是一個開始

本地主機:8080 /開始/(這是我的所有文件都存在的文件夾,它給了我這個錯誤

致命錯誤:未捕獲的異常:無在C:\ xampp \ htdocs \ start \ core \ Router.php中爲此URL定義的路由:25堆棧跟蹤:#0 C:\ xampp \ htdocs \ start \ index.php(8):Router-> direct('start ')#1 {main}扔在第25行的C:\ xampp \ htdocs \ start \ core \ Router.php

當我加載頁面時,找不到對象。

Request類

<?php 

class Request 
{ 
    public static function uri() 
    { 
    return trim($_SERVER['REQUEST_URI'], '/'); 
    } 
} 
?> 
+1

'的var_dump(支持:: URI())'看它說什麼。它可能是說'開始/'或類似的不在你的列表中。 –

+0

字符串(5)「開始」這是你正在使用的路由器庫的答案 –

+0

? – siddhesh

回答

0

基本上REQUEST_URI包含了除主機名和協議對整個URL,因爲開始是你的文件夾名稱和根目錄應用程序的您必須開始後獲得請求的URI

for eg 
http://localhost/start/about/ 
REQUEST_URI = /start/about/ 
after trimming = start/about 

這將不匹配任何路由器。 所以你有你的基本目錄傳遞給你的函數莫名其妙的一種方法是修改您的URI功能

class Request 
{ 
    public static function uri($base = "") 
    { 
    $url = str_replace($base,"",$_SERVER['REQUEST_URI']); 
    return trim($url , '/'); 
    } 
} 

,並可以被稱爲Request::uri("start")

+0

我不僅想顯示索引文件,但它只顯示該文件和該文件上的鏈接不起作用。我不想強調這些值,我想在瀏覽器baar中傳遞它們。 –

+0

我不是說你去hardore url的傳遞參數是你的根目錄ex。你的應用程序駐留在xampp/htdocs/dir1/dir2中,那麼你的根目錄將會是'dir1/dir2',這是硬編碼的,但之後大約仍然是動態的@MuhammadHamza – siddhesh

+0

但是,爲什麼這不起作用,通過替換你的更改顯示索引頁,但代碼在該頁上運行,沒有鏈接工作,即使當我在瀏覽器欄中寫道,它給我的對象沒有找到 –

相關問題