Phalcon Micro Collection路线不匹配

时间:2017-10-22 21:01:31

标签: php phalcon

我正在尝试制作simple api with phalcon micro,但我没有让它发挥作用。在Url / todo /上应该调用控制器。

的index.php

$di  = new \Phalcon\Di\FactoryDefault;

$di->set('url', function() {
    $url = new \Phalcon\Mvc\Url();
    $url->setBaseUri('/');

    return $url;
});

$di->set('collections', function() {
    $collection = new \Phalcon\Mvc\Micro\Collection();

    $collection->setHandler(SimpleToDo\Controller\ApiController::class, true);
    $collection->setPrefix('/todo');
    $collection->get('/', 'index');

    return [$collection];
});

$app = new \Phalcon\Mvc\Micro();
$app->setDI($di);

foreach($di->get('collections') as $collection) {
    $app->mount($collection);
}

$app->notFound(function () use ($app) {
    $app
    ->response
    ->setStatusCode(404, 'Not Found')
    ->sendHeaders();
});

$app->handle();

ApiController.php

<?php

namespace SimpleToDo\Controller;

class ApiController
{
    public function index()
    {
    echo 'Hello World!';
    }
}

1 个答案:

答案 0 :(得分:0)

我几次遇到同样的问题,但我这样解决了这个问题。

您必须在services.php文件中启动路由,如下所示:

protected function initRouter() {
    return include __DIR__ . '/config/routes.php';
}

您只需创建routes.php文件,您必须在其中编写所需路由的代码。 这将为您提供服务,您可以相应地自定义您的网址。

   use Phalcon\Mvc\Router;
   // Create the router
   $router = new Router();

   $router->add("/yourPrefferedUrl", array(
       "controller" => "controllerName",
       "action" => "methodeName"
   ));

您可以为多个请求添加代码,您只需复制相同的代码,只需更改控制器和方法即可。 这样,您可以尝试使用位于单独文件中的Controller,而不是单个PHP文件。

相关问题