我是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代码
答案 0 :(得分:2)
您的.htaccess文件很好,不,如果您只想使用标准的MVC /控制器/操作类型模式,则不需要任何路由文件。
您的问题是您的http服务器没有正确重写URL。我不确定您使用的是哪个http服务器,因此,我无法提供有关修复http服务器本身的任何细节。
答案 1 :(得分:1)
关闭MultiViews或者apache将尝试通过添加一些扩展名(.txt,.html,.htm,.php ...)来查找文件,然后重定向变量_url是错误的。
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>