【问题标题】:Phalcon Micro Collection Routes not matchingPhalcon 微收集路由不匹配
【发布时间】:2017-10-22 21:01:30
【问题描述】:

我正在尝试创建一个 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!';
    }
}

【问题讨论】:

标签: php phalcon


【解决方案1】:

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

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

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

您只需要创建routes.php 文件,您必须在其中编写所需路由的代码。 这将满足您的要求,您可以相应地自定义您的 URL。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2017-08-18
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多