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 のビューを設定したことです。おそらく私のphpコードよりもサーバーのセットアップに問題があると思わせるのは404だと思います

4

2 に答える 2

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 に答える