Phalcon PHP框架没有将参数传递给控制器

时间:2015-04-07 00:43:08

标签: php phalcon phalcon-routing

刚开始在Phalcon PHP框架中开发,对PHP来说也是一个新手。我的问题是如何使用路由创建请求,我相信我已经完成了,并将路由的参数传递给链接到所述路由的控制器操作。下面我已经包含了我一直在研究的三个文件,并总结了每个文件应该做的事情。我也有最终结果,我的问题直接存在。

第一个文件是index.php文件,它接收我网站的所有路由请求。

<?php

//Include all routes on site
foreach (glob("../app/routes/*.php") as $filename)
{
    include $filename;
}

foreach (glob("../app/controllers/*.php") as $filename)
{
    include $filename;
}

//Create routes and initialize routes
$router = new \Phalcon\Mvc\Router();

$router->mount(new PublicRoutes());
$router->mount(new ApiRoutes());
$router->mount(new AdminRoutes());

$router->handle();

$controller = $router->getControllerName();
$action = $router->getActionName();
$params = $router->getParams();

$di = new \Phalcon\DI\FactoryDefault();

$d = new Phalcon\Mvc\Dispatcher();
$d->setDI($di);
$d->setControllerName($router->getControllerName());
$d->setActionName($router->getActionName());
$d->setParams($router->getParams());

$controller = $d->dispatch();

第二个文件是为我的API调用安装的实际路由,我正在测试所有内容。

<?php

class ApiRoutes extends Phalcon\Mvc\Router\Group
{
    public function initialize()
    {

        //Basic api route for pixelpusher
        $this->add(
            "/addhawk/api/:action/:model/:params",
            array(
                "controller" => "api",
                "action" => 1,
                "model" => 2,
                "params" => 3,
            )
        );

    }
}

第三个也是最后一个文件是API的控制器类,它是我现在正在测试的唯一动作。

<?php

class ApiController extends \Phalcon\Mvc\Controller
{

    public function handlerAction()
    {
        //Pull in parameters
        echo "<h1>API Handler Entered</h1>";

        $model = $this->dispatcher->getParam("model");

        echo $model;

        //Choose correct api based off of api param
        if( $model == "grid" ) {
            echo 'grid';
        }
        else if ( $model == "admin" ) {
            echo 'admin';
        }
        else {
          //No valid api must have been found for request
        }

        //Return result from api call

        return true;
    }

}

所以,url是“localhost / addhawk / api / handler / grate / view”,它会在ApiController中第9行的html中产生以下输出。

Output from API call

$ model变量没有打印出来。也没有错误,所以我不知道它为什么不打印。根据我在线阅读的文档和每个资源,所有参数都应该直接来自每个控制器操作,这要归功于调度程序和$ di class或类似的东西。所以我的问题是,为什么我不能访问参数,如果一切似乎都在说我应该能够?

0 个答案:

没有答案