2013-10-26 49 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