2

我是 phalconphp 的新手,并按照他们的教程进行操作,据我了解,我不需要创建特定的路由组件,并且它应该选择一个路由(如果存在)。我在这里显然可能大错特错,这意味着应该很容易纠正我!但到目前为止,唯一可以工作的控制器是我的 indexController。

这是我的引导程序

<?php

try {

//Register an autoloader
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
    '../app/controllers/',
    '../app/models/'
))->register();

//Create a DI
$di = new Phalcon\DI\FactoryDefault();

//Setting up the view component
$di->set('view', function(){
    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir('../app/views/');
    return $view;
});

//Handle the request
$application = new \Phalcon\Mvc\Application($di);

echo $application->handle()->getContent();

} catch(\Phalcon\Exception $e) {
  echo "PhalconException: ", $e->getMessage();
}

然后如果我创建自己的 FooController

<?php

class FooController extends \Phalcon\Mvc\Controller
{

public function indexAction()
{

    echo "FOO";

}

public function fooAction(){
    echo "FOO";
}

}

这些行动都不会被解雇。现在我实际上收到了来自服务器的 404 错误文档。所以我不确定我的 .htaccess 文件是否有问题,尽管这是直接从教程中复制的

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
   </IfModule>

任何人都可以在这里看到明显的错误吗?唯一的区别是我为 indexController 设置了一个视图。我认为是 404 让我相信这更多是服务器设置的问题,也许是我的 php 代码

4

2 回答 2

2

您的 .htaccess 文件很好,不,如果您只想使用标准的 MVC /controller/action 类型模式,则不需要任何路由文件。

您的问题是您的 http 服务器没有正确重写 URL。我不确定您使用的是哪个 http 服务器,因此我无法提供有关修复 http 服务器本身的任何细节。

于 2013-10-26T22:52:36.743 回答
1

关闭 MultiViews 或 apache 将尝试通过添加一些扩展名(.txt、.html、.htm、.php ...)来查找文件,然后重定向变量 _url 错误。

<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteEngine on
  RewriteRule  ^$ public/    [L]
  RewriteRule  (.*) public/$1 [L]
</IfModule>
于 2014-08-11T20:10:26.363 回答