당신이 컨트롤러에 대한 기본 네임 스페이스를 설정하지 않았기 때문에 그것은 실패 할 수 있습니다. 나는 또한 윈도우에서 리눅스로 전환 할 때 컨트롤러 이름의 경우에 약간의 문제가 있었다. 소문자 이름을 사용하면이 문제가 해결 된 것으로 보입니다.
$router = new Phalcon\Mvc\Router\Annotations(false);
$router->removeExtraSlashes(true);
$router->setDefaultNamespace('App\Controllers\\');
$router->setDefaultController('index');
$router->setDefaultAction('index');
/**
* Standard MVC routes
*/
$router->add('/', []);
$router->add(
'/:controller',
[
'controller' => 1
]
);
$router->add(
'/:controller/:action/:params',
[
'controller' => 1,
'action' => 2,
'params' => 3
]
);
return $router;
또한 notFound 메소드가 제대로 작동하지 않았습니다. 그래서이 문제를 처리하기 위해 리스너를 eventsManager에 연결했습니다.
$di->set('dispatcher', function() use ($di) {
// ERROR 404 - Page not found
$evManager = $di->getShared('eventsManager');
$evManager->attach(
"dispatch:beforeException",
function ($event, $dispatcher, $exception) {
switch ($exception->getCode()) {
case Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
case Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
$dispatcher->forward(
[
'controller' => 'error',
'action' => 'show404'
]
);
return false;
}
}
);
$dispatcher = new Dispatcher();
$dispatcher->setEventsManager($evManager);
return $dispatcher;
}, true);
이 코드는 어디에 둘 수 있습니까? 그것은'config \ services.php'입니까? – SaidbakR