2017-07-26 39 views
0

我是新來的苗條。我遇到了一個錯誤,告訴我可調用控制器不存在。但是我的其他控制器(HomeController)確實有效。我確信我正在做一些愚蠢的事情,但我無法弄清楚什麼。Slim3告訴我,無法找到可呼叫路線

錯誤消息

Type: RuntimeException 
Message: Callable JoeyD473\RPG_Tools\controllers\traveller\UniverseCreationControllercreateUniverse does not exist 
File: C:\Users\Joey\Web\JRD_Traveller_Tools\vendor\slim\slim\Slim\CallableResolver.php 

Line: 90 

項目結構

\public 
    index.php 
    .htaccess 
\src 
    \app 
     \controllers 
      BaseController.php 
      HomeController.php 
      \traveller 
       UniverseCreationController.php 
     \model 
     \views 
     config.php 
     container.php 
     routes.php 

composer.json

"autoload": { 
    "psr-4": { 
     "JoeyD473\\RPG_Tools\\models\\": "src/app/model", 
     "JoeyD473\\RPG_Tools\\controllers\\": "src/app/controllers" 
    } 
}, 

container.php

$container = $app->getContainer(); 

$container['view'] = new \Slim\Views\PhpRenderer(APP.'views/'); 

$container['db'] = function($c){ 
    $settings = $c->get('settings')['db']; 

    $db = new \Aura\Sql\ExtendedPdo($settings['vendor'].':host='.$settings['host'].';dbname='.$settings['db_name'],$settings['username'],$settings['password']); 

    return $db; 
}; 

$container['HomeController'] = function($container){ 
    return new \JoeyD473\RPG_Tools\controllers\HomeController; 
}; 

$container['UniverseCreationController'] = function($container){ 
    return new \JoeyD473\RPG_Tools\controllers\traveller\UniverseCreationController; 
}; 

routes.php文件

$app->get('/',JoeyD473\RPG_Tools\controllers\HomeController::class.':home'); 

$app->get('/api',JoeyD473\RPG_Tools\controllers\HomeController::class.':sw_api'); 

$app->get('/temp',JoeyD473\RPG_Tools\controllers\HomeController::class.':temp'); 

$app->get('/universe/create_new_universe',JoeyD473\RPG_Tools\controllers\traveller\UniverseCreationController::class.'createUniverse'); 

UniverseCreationController.php

namespace JoeyD473\RPG_Tools\controllers\traveller; 

use JoeyD473\RPG_Tools\controllers\BaseController; 
use JoeyD473\RPG_Tools\models\traveller\universe\Universes; 

class UniverseCreationController extends BaseController 
{ 
    public function createUniverse($request,$response) 
    { 
     return $this->container->view->render($response,'travellers/universe/create_universe.phtml'); 
    } 

    public function generateUniverse($request,$response) 
    { 
     $universe = new Universes($this->db); 
     return 'generateSector'; 
    } 
} 

回答

1

你已經在你的最後路線

錯過了一個冒號( :
\traveller\UniverseCreationController::class.'createUniverse'); 
              ^^^ 

您也可以對此使用數組語法。

[YourClass::class, 'yourMethod'] 
+0

謝謝。正如我所說的那樣,我只是忽略了一些愚蠢的東西 – JoeyD473