2017-10-22 12 views
1

simple api with phalcon microを作成しようとしていますが、動作させていません。 Url/todo /でコントローラーを呼び出す必要があります。Phalcon Micro Collection Routeが一致しません

の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!'; 
    } 
} 
+0

これは、安心なAPIを開始するための公式チュートリアルです。https://olddocs.phalconphp.com/en/3.0.0/reference/tutorial-rest.html – Ale

+0

sryですが、これは役に立ちません。このドキュメントを見て、しかし、私はコントローラの魔法使いを使用しようとすると、単一のファイルではなく、単一のPHPファイルに位置しています。 – torsten

答えて

0

私は数回戻って、同じ問題に直面したが、私はこのようなソリューションに来ます。

あなたは、以下のようなあなたの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ファイルではなく、別々のファイルにあるControllerを使うことができます。

関連する問題