0

皆さん、こんにちは。Web サイトのルーティング部分を作成するために MicroFramework Silex を使用したいと考えています。私が直面している問題は、ドキュメントをよく理解していないため、機能させることができないということです。

必要なファイルをファイル ツリーに実装し、いくつかのコードを index.php に追加しました。

このコードは次のとおりです。

$app = new Silex\Application(); 

$app->post('/web/{slug}', __DIR__.'/Controller/PostsController::showPost()');

$app->run();

PostsController クラスを含む Controller というディレクトリも作成しました。しかし、今は続行する方法がわかりません。ナビゲーション クラスで動作する動的ルーティングを作成する方法の簡単な例を誰か教えてもらえますか?

4

1 に答える 1

2

ファイルパスとクラス名/コールバック関数を混在させています。メソッドに渡される 2 番目の引数はpost/get/match、呼び出し可能に解決できるものでなければならないため、ラムダ関数、オブジェクト/クラスとメソッド名の配列、または関数 / クラス::メソッドを含む文字列にすることができます。

//Lambda
$app->get('/web/{slug}', function(){
        return \MyNamespace\Controler\PostControler::showPost();
    }
);    

//Static call
$app->get('/web/{slug}', array('\\MyNamespace\\Controler\\PostControler','showPost'));

//Object call
$myCtrl = new \MyNamespace\Controler\PostControler();
$app->get('/web/{slug}', array($myCtrl,'showPost'));

//Function
function showPost(){
    return \MyNamespace\Controler\PostControler\showPost();
}
$app->get('/web/{slug}', 'showPost');

//Both static and not methods
$app->get('/web/{slug}', '\\MyNamespace\\Controler\\PostControler::showPost');

独自の名前空間を作成するときは、それらをオートローダーに追加することを忘れないでください

于 2012-11-12T22:57:46.267 に答える