2011-06-20 9 views
7

私は今までルートパスを過ぎて動作するようには見えません。Silex PHP Frameworkプロジェクトでコントローラを設定するにはどうすればよいですか?

すべてのコントローラ呼び出しをapp.phpファイルに入れますか?

$app->get('/', function ($id) { 
    ... 
}); 

$app->get('/about', function ($id) { 
    ... 
}); 

または別のファイルに入れますか? これまでのところ、root getメソッドはうまく動作し、小枝のテンプレートをレンダリングしますが、それ以上のものは何もしません。

+0

'/ about'ハンドラが呼び出されないことを意味しますか? - ファイル内のより早い時期に登録されたハンドラを必要とする必要があります - '/'は常に – meouw

+0

と一致します@meouw '/'は '/ about'とマッチしません。しかし、 '/ {var}'はそうです。 – igorw

+0

@igorw - 訂正ありがとう:) – meouw

答えて

15

シレックスはマイクロフレームワークです。 1つのファイル内でアプリケーションを定義することができます。しかし、それはあなたがする必要はありません。

私は通常、やっていることは1つのapp.phpファイル内のすべてのコントローラを定義しますが、srcディレクトリ内のクラスに再利用可能な部品を抽出し、たとえばsrc/ProjectName/SomeClass.phpのために、自動的にロードしてもユニットをテストすることができます。

コントローラの量が増えた場合、アプリケーションを「モジュール」に分割してメインアプリケーション(たとえば、管理パネルを/adminにマウントする)の下にマウントすることができます。サイレックスはそうのように、取り付けサポートしています。マウントの詳細については

require_once __DIR__.'/silex.phar'; 

$app = new Silex\Application(); 

$app->mount('/admin', new Silex\LazyApplication(__DIR__.'/admin.php')); 

、サイレックスのドキュメントからReusing applicationsをチェックしてください。

+0

Mount()、excellent。 – Failpunk

+3

このリンクは有効ではありません。 Provderのドキュメントはこちら:http://silex.sensiolabs.org/doc/providers.html – lucifurious

関連する問題