2017-03-17 109 views
1

我正在从laracast(https://laracasts.com/series/php-for-beginners)继续本教程,我在本集(16 - 制作路由器)中。其中显示了如何构建基本路由器。如视频所示,我已经完成了我的知识,但是我在构建路由器时遇到了问题。 我收到此错误信息:没有路由定义为这个uri

Fatal error: Uncaught exception 'Exception' with message 'No routes define for this uri' in C:\wamp64\www\todo\core\Router.php on line 23 Exception: No routes define for this uri in C:\wamp64\www\todo\core\Router.php on line 23

我如何通过这个错误?这里是我的代码

routes.php文件:

$router->define([ 
    '' => 'controllers/index.php', 
    'about' => 'controllers/about.php', 
    'contact' => 'controllers/contact.php' 
]); 

Router.php

class Router 
{ 

    protected $routes = []; 


    // this function defines our routes 
    public function define($routes) 
    { 
     # code... 
     $this->routes = $routes; 
    } 

    public function direct($uri){ 
     if (array_key_exists($uri, $this->routes)) { 
      # code... 
      return $this->routes[$uri]; 
     } 
     throw new Exception("No routes define for this uri"); 

    } 
} 

的index.php

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

$router = new Router; 

require 'routes.php'; 

$uri = trim($_SERVER['REQUEST_URI'], '/'); 

require $router->direct($uri); 

如果您需要更多的信息通知我。

UPDATE 这是我的地盘结构wampserver WWW文件夹:

enter image description here

+1

更改您的错误消息,以提供更多信息。也许''没有路线定义这个uri:$ uri“'会告诉你你错过了什么路线。 – miken32

+0

未捕获异常'异常'消息'没有路由为此uri定义:todo' –

+0

这就是我得到的 –

回答

2

我有同样的问题,在此过程中。我beleve你已经有htcaccess文件 和这些代码里面

RewriteEngine On 
RewriteBase /todo/ 
RewriteRule ^.*$ index.php [END] 

反正路线应该是这样的

$router->define([ 
    'todo' => 'controllers/index.php', 
    'todo/about' => 'controllers/about.php', 
    'todo/contact' => 'controllers/contact.php' 
]); 

,或者您可以连接到PHP内置的CMD Web服务器,它会解决为您的路线问题以及

关注