2017-09-18 1 views
0

이것은 내 주 입니다. 파일입니다. 브라우저에 약 페이지를로드 할 때 작성하지만 실패합니다.PHP 경로가 브라우저 막대의 효과를 변경하지 않습니다.

<?php 


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


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

?> 

이, 내가 노력

<?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'); 
     } 
    } 
?> 
나는 오류가 여기에 무엇인지 모르겠어요

routes.php 파일

<?php 

$router->define([ 

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

?> 

이것은 공유기 파일입니다 많은 것을 배우고 튜토리얼을보고 정확하게 그가하는 것처럼 보이지만 결과를 보여주지는 않습니다.

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

난 단지 시작을 쓰기

로컬 호스트 : 8080/시작/ (이것은 내 모든 파일이 존재하는 폴더, 그것은 나에게 오류를 제공

치명적인 오류 : catch되지 않은 예외 : 없음 이 URL에 대해 C : \ xampp \ htdocs \ start \ core \ Router.php에 정의 된 경로 : 25 Stack trace : # 0 C : \ xampp \ htdocs \ start \ index.php (8) : Router-> direct ('start ') # 1 {main}은 C : \ xampp \ htdocs \ start \ core \ Router.php 25 행에 넣습니다.

개체를 찾을 수 없습니다.

시작하여 시작 후 요청 URI를 얻을 수있는 응용 프로그램의 폴더 이름과 루트 디렉토리이기 때문에 기본적으로 REQUEST_URI는 호스트 이름과 프로토콜을 제외한 전체 URL을 포함

<?php 

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

'위해서 var_dump (요청 : URI())로 호출 할 수있는 '볼이다 그게 뭐래? 그것은 아마 당신의 목록에없는'start /'또는 비슷한 것을 말합니다. –

+0

string (5) "start"이것은 사용중인 라우터 라이브러리 –

+0

입니까? – siddhesh

답변

0

요청 클래스

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

나는 당신에게 하드 패스 URL을 알려주는 것이 아니다. 예를 들면 루트 매개 변수이다.귀하의 응용 프로그램은 xampp/htdocs/dir1/dir2에 있습니다. 루트 디렉토리는 하드 코드 된 'dir1/dir2'입니다.하지만 이후에도 여전히 동적입니다 @MuhammadHamza – siddhesh

+0

그렇다면 왜이 옵션이 작동하지 않습니까? 색인 페이지는 있지만 코드는 해당 페이지에서 실행 중이며 링크가 작동하지 않습니다. 브라우저 바에 글을 쓸 때도 찾을 수 없습니다. –

관련 문제