2013-10-26 133 views
2

我是phalconphp的新手,根据我的理解,我不需要创建特定的路由组件,并且它应该选择路由(如果存在)。我显然可能在这里大错特错,这意味着应该很容易纠正我!但到目前为止,唯一可以工作的控制器就是我的indexController。Phalconphp路由不起作用

这是我的引导

<?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代码

回答

2

您的.htaccess文件是好的,不,如果你不需要任何路由文件只想使用标准的MVC /控制器/动作类型模式。

你的问题是你的http服务器没有正确地重写URL。我不确定你使用的是哪个http服务器,所以我不能提供任何有关修复http服务器本身的细节。

+0

我只是使用Apache作为XAMPP – TommyBs

+1

的一部分,我的AllowOverride无我vhost.conf设置,这是这个问题,感谢在正确的方向指针 – TommyBs

+0

很高兴你有你的问题制定了:) – brian

1

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

<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine on 
    RewriteRule ^$ public/ [L] 
    RewriteRule (.*) public/$1 [L] 
</IfModule> 
+0

添加选项-MultiViews为我工作。 – Ajibola