7

これまでのところ、ルートパスを超えて機能するものを取得できないようです。

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

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

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

それとも、それらを別々のファイルに入れますか?これまでのところ、root getメソッドは正常に機能し、小枝テンプレートをレンダリングしますが、それ以降は何もしません。

4

1 に答える 1

15

Silex はマイクロフレームワークです。単一のファイル内でアプリケーションを定義する機能を提供します。しかし、それはあなたがしなければならないという意味ではありません。

私が通常行うことは、すべてのコントローラーを 1 つのapp.phpファイルに定義することですが、再利用可能な部分をsrcディレクトリ内のクラスに抽出します。たとえばsrc/ProjectName/SomeClass.php、自動読み込みと単体テストが可能です。

ここで、コントローラーの数が増えた場合は、アプリケーションを「モジュール」に分割し、それらをメイン アプリケーションの下にマウントできます (たとえば、管理パネルを の下にマウントします/admin)。Silex は次のようにマウントをサポートします。

require_once __DIR__.'/silex.phar';

$app = new Silex\Application();

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

マウントの詳細については、Silex ドキュメントのReusing applicationsを参照してください。

于 2011-06-20T14:06:48.953 に答える