
レビューはより理論的であり、次のセクションが含まれています。
- 管理ジェネレーター
- ユーザー
- xlsのインポート/エクスポート
- APIとOAuth 2.0
- メニュー/ナビゲーション
- マルチメディア
- フォーム
- 検索する
- ページネーション
- ファイルシステム
- HTTPクライアント
使用例とコードの例は、github.comまたは公式サイトの各プロジェクトのページで調べることができますが、興味深い場合は、いくつかのソリューションを個別に検討することができます。
管理ジェネレーター
Sonataadminbundle
おそらく、コンテンツコントロールパネルを作成するための最も機能的なパッケージです。
以下と一緒に使用:
- SonataDoctrineORMAdminBundle / SonataDoctrinePhpcrAdminBundle / SonataDoctrineMongoDBAdminBundle / SonataPropelAdminBundle
- ソナタユーザーバンドル
- SonataMediaBundle
- FOSUserBundle
以下を管理できる適切な「管理パネル」を整理できます。
- ユーザー別
- ユーザーグループ
- メディア(画像、ビデオ、YouTube、Vimeo、その他のファイル)
- ユーザーエンティティとエンティティの関係
あります:
- ダッシュボード
- ログイン/ログアウト
- メニュー
- リスト用の拡張可能なフィルター
- エンティティ間の関係のウィジェットとハンドラー(manyToOne、manyToManyなど)
- グループ運営
- json、csv、xml、xlsのリストをインポートする
- インターフェース翻訳

抽象化のために、DBとNoSQLが利用可能です:Doctrine、Propel。
安定したSymfony 2.0で安定。
2.0.10で使用しました。
SonataAdminBundleについては、すでにvitikoの 投稿がありました 。
プロジェクトサイト
github.comのプロジェクト
サンドボックス
管理者バンドル
エンティティを管理するためのよりシンプルで機能性の低いパッケージですが、より便利な(主観的な)カスタマイズメカニズムを備えています。 設定全体は、各エンティティのgenerator.ymlに記述されています。
あります:
- メニュー
- エンティティフィールド値によるリストのフィルター
- エンティティ間の関係のウィジェットとハンドラー(manyToOne、manyToManyなど)
それは多くの手作業を必要とし、多くの反復的なアクションのように思われましたが、注目に値すると思います。 エンティティごとに、パブリック部分に情報を表示するために、管理バンドルとバンドルを生成する必要がありました。

プロジェクトサイト
github.comのプロジェクト
サンドボックス
ビドス
ユーザー
FOSUserBundle
ユーザー管理のための広範な機能を提供するSymfony 2の最も人気のあるバンドルの1つ。 このパッケージは、ユーザーとの作業時に発生する主なタスクを実装します。
- 基本的なユーザープロパティ:アクティビティ、名前、ログイン、パスワード、電子メール、作成日/変更日/最終承認など 柔軟な拡張
- Symfony 2の役割ベースのユーザーグループ
- メールで確認するユーザーの登録
- パスワード回復
- ユーザープロファイル
- さまざまなフォームとハンドラー
- さまざまなデータストレージスキーム:DB、NoSQL
Symfony 2の他の多くのプロジェクトで使用されています。
github.comのプロジェクト
ビデオマニュアル
ソナタユーザーバンドル
FOSUserBundleをSonataAdminBundleに統合し、管理インターフェースを介してユーザーを管理し、FOSUserBundleの機能を拡張するために使用されます。
github.comのプロジェクト
FOSFacebookBundle
このバンドルは、Facebook PHP / JavaScript SDKをSymfony 2プロジェクトに統合するほか、ユーザーがFacebook経由でプロジェクトにログインできる独自の認証プロバイダーを提供します(ボタン、「Facebook経由でログイン」)。 同時に、FOSUserBundleとの統合がサポートされています。
Facebook用のSymfony 2に基づくCanvasアプリを使用できますが、クロスブラウザーセッション作業(ie7 / 8のiframeからのcookieのブロックとp3p)のためにAuthenticationListenerを記述する必要があります。
github.comのプロジェクト
xlsのインポート/エクスポート
PHPExcel
xlsテーブルを操作するための有名なライブラリ。
データベース(xlsでデータを提供したい顧客)をデータベースにインポートし、xls(統計、レポートなど)にエクスポートするために使用すると便利です。
プロジェクトのウェブサイトとドキュメント
github.comのプロジェクト (非公式リポジトリ)
エクセルバンドル
PHPExcelを操作するためのさまざまなサービスコンテナ(DI)を提供するバンドル。 xlsを応答(Response)として生成するコントローラーをすばやく作成できます。
github.comのプロジェクト
APIとOAuth 2.0
FOSRestBundle
RESTFul Webサービスを作成するための便利なツールのバンドル。
機能:
- 目的の形式(json、xml)で応答(Response)をレンダリングするためのヘルパーを表示します
- RESTの概念に従ってリソースURLを生成するためのカスタムルートローダー
- コントローラーメソッド名によるWebサービスリソースの自動ルート生成(ルート)(getNewsAction()-> / api / news)
- 適切なHTTPステータスを送信するための例外コントローラー
モバイルアプリケーションのサーバー側を開発するときに非常に役立ちました。
github.comのプロジェクト
EscapeWSSEAuthenticationBundle
APIへのリクエストの簡単な認証を整理できるバンドル。 高度なHTTP認証に基づいています。 拡張機能として、Webサービスのオープンセキュリティ仕様であるWSSEが使用されます。 特に、SOAPから借用したWSSEユーザー名トークンアルゴリズムであるHTTP認証に適合しています。
モバイルアプリケーションのサーバー側を開発するときにも役立ちます。
Atom認証
github.comのプロジェクト
symfony.comの情報
OAuth2-PHP
PHPのOAuth 2.0サーバー。 OAuth 2.0ドラフト20は現在実装されています。
Google Codeプロジェクト
github.comのプロジェクト (フォーク)
FOSOAuthServerBundle
OAuth2-PHP機能をSymfony 2プロジェクトに統合するバンドル。
OAuth 2.0プロトコルを使用して独自のAPIへのアクセスと承認を実装するプロジェクトに役立ちます。
実際のプロジェクトでは使用しませんでしたが、テストを行ったところ、うまく実装されているように見えました(戦闘の経験がある人はコメントに書いてください)。
github.comのプロジェクト
メニュー/ナビゲーション
Knpmenu
サイトでナビゲーションを作成するためのオブジェクト指向インターフェースを提供するライブラリ。
github.comのプロジェクト
KnpMenuBundle
KnpMenuライブラリをプロジェクトに統合し、サイトナビゲーション(メニュー)の柔軟な管理のためのさまざまなツールを提供するSymfony 2の最も人気のあるバンドルの1つ:
- データベースのデータに基づくなど、さまざまなネストおよび複雑なメニューを作成するためのオブジェクト指向インターフェース
- カスタムテンプレートに応じたメニューのレンダリング
- 小枝の機能
- アクティブなアイテムとさまざまなカスタマイズツールの強調表示
すべてのプロジェクトで使用されます。
github.comのプロジェクト
マルチメディア
想像してみて
通常のオブジェクト指向スタイルで画像を操作するためのライブラリ。 選択した画像に応じて、次のものが必要になる場合があります。
- Gd2
- イマジック
- Gmagick
機能:
- 画像のサイズ変更、トリミング
- 画像を作成し、画像上にテキストを描画するための描画API
- 画像の透明度を操作するためのマスクの機能
- 上記の機能に基づいてさまざまなフィルターを作成する
サムネイルを作成するための非常に便利なライブラリですが、これはすべての機能のほんの一部です。
作成時に、著者はPythonのPILライブラリに触発されました。
プロジェクトサイトとAPI
github.comのプロジェクト
AvalancheImagineBundle
Symfony 2プロジェクトで画像を簡単に操作するためのバンドル。
コレクションの画像を表示するためのさまざまなフィルターを構成できます。
フィルター設定:
- サムネイルサイズ
- 圧縮比
- サイズ変更/トリミング方法(アウトバウンド/インセット)
- 画像処理ドライバー(gd、imagick、gmagick)
- その他
選択したフィルターで対応する画像を表示するためのTwigタグ(関数)があります。 バンドルには、カスタムルートローダーもあります。 特定のコントローラーにアクセスすると、コントローラー(コントローラー)はイメージを生成し、サーバー応答として提供します。
このバンドルを使用して、サムネイルを動的に生成しました:
- 元の画像はサイトギャラリーにアップロードされます
- 必要なフィルターが構成されています。
- ビューには、バンドルとフィルターの設定に対応する画像へのパスが表示されます(twig関数を使用)
- クライアントが画像のためにサーバーにアクセスするとき、apache / nginxに画像の実際の存在をチェックさせます
- 画像が存在する場合、サーバーはそれを静的として提供します
- そうでない場合は、対応するコントローラーに書き換え/リダイレクトします。その後、イメージが作成され、その後静的に提供されます
指定されたフィルター、バンドル設定、および要件を考慮して、画像へのパスを生成する関数を使用してTwig拡張機能を作成する必要があったことは事実でした。
便利に! または、モバイルアプリケーションのサーバー側に使用することもできます。設計コンセプトを変更する場合は、新しいフィルターを記述するだけで十分です。
github.comのプロジェクト
SonataMediaBundle
Symfony 2 + SonataAdminBundleのプロジェクトでさまざまなメディア(ファイル、ビデオ、画像)を管理(アップロード、削除、ギャラリーで整理)できるメディアライブラリ。
各タイプは、以下を担当するサービスプロバイダーによって管理されます。
- メディアファイルメタデータの抽出
- 画像のサムネイルを作成する
- フォーム設定の編集
- テンプレート内のメディアファイルのレンダリングとプレゼンテーション
メディアファイルはコンテキストに関連する場合があります。 コンテキストを使用すると、メディアセットをグループ化できます。たとえば、ニュース-ニュースコンテキスト、ユーザー-ユーザーコンテキストです。 メディアファイルの要件はコンテキストごとに異なる可能性があるため、コンテキストはメディアの変更に使用されるフィルター(構成で構成)を決定します。
フィルター設定:
- サムネイルサイズ
- 圧縮比
- サイズ変更/トリミング方法(アウトバウンド/インセット)
- その他
このパッケージは、フィルターのサイズ変更およびトリミングロジックを実装する機能と、 LiipImagineBundle (fork AvalancheImagineBundle)の代替機能を提供します。

利用可能なサービス:
- プロバイダー:
- sonata.media.provider.image:画像
- sonata.media.provider.file:ファイル
- sonata.media.provider.dailymotion:Dailymotion
- sonata.media.provider.vimeo:Vimeo
- sonata.media.provider.youtube:Youtube
- ファイルシステム:
- sonata.media.filesystem.local:ローカルファイルシステム(デフォルト)
- sonata.media.filesystem.ftp:FTP
- sonata.media.filesystem.s3:Amazon S3
- さまざまなCDN
一般に、強力なパッケージですが、使用中に修正する必要がある小さな妨害がいくつかあります。 たとえば、メディアへのバインドを使用してエンティティを編集するときに画像のプレビューを表示します。
プロジェクトサイト
github.comのプロジェクト
フォーム
GenemuFormBundle
jQuery、jQuery UI、およびさまざまなプラグインを使用して、Symfony 2 Form Componentの機能を拡張するバンドル。
バンドルが提供するフォームタイプとウィジェットの一部は次のとおりです。
- Captcha GD
- レカプチャ
- Tinymce
- デイトピッカー
- スライダー
- オートコンプリート
- ファイル( uploadifyライブラリによって実装され、 jCropで使用できます)
- 画像
- カラーピッカー
- 格付け
- 選ばれた
1つのプロジェクトですべての機能を使用する必要はほとんどありませんが、一部の実装をスパイすることは有用であり、時間を節約できます。
github.comのプロジェクト
キャプチャバンドル
このバンドルは、Symfony 2フォームコンポーネントのキャプチャサポートを追加します。
基本的な設定セットが含まれていますが、必要に応じて、必要な機能を追加/変更できます。
- 背景色
- テキストの色
- フォント
- フォントサイズ
- 歪み
私は本当に非常に速くする必要があったので、バンドルを修正しなければなりませんでしたが、次回は正直にPRします)))
github.comのプロジェクト
検索する
スフィンクスバンドル
Sphinxが何であるかを伝えるべきではない、誰もが知っているべきだと思います。 したがって、SphinxBundleは、Sphinx検索インデックスを操作できるバンドルです。 動作させるには、 公式サイトの sphinxapi.phpライブラリが必要です。
インデックスには、エンティティテーブル(検索が実行されるエンティティ)に応じて、各エンティティの識別子(id)が必要です。 検索デーモンへの要求の後、見つかったレコードの識別子(id)を使用して、エンティティ自体が検索クエリに関連するデータベースから取得され、ページごとのナビゲーションの可能性があります。
このバンドルは多くの機会を提供しませんが、タスクを実装するためのベースとして大いに役立ちました。 たとえば、複数のエンティティを操作するロジックを実装する必要がありました(スフィンクスインデックスは複数のエンティティテーブルにも作成する必要があります)。各エンティティのビューで、後で「検索スニペット」(それぞれに異なるテキストブロックエンティティ)およびリンクを生成するためのルート、なぜなら エンティティはサイトのさまざまなセクションに表示されていました。
github.comのプロジェクト
ページネーション
パゲルファンタ
PHP 5.3のデータセットの「ページネーション」ライブラリ。
ページ分割するデータのタイプに応じて、さまざまなアダプタークラスを使用します。
- Arrayadapter
- モンゴアダプター
- マンダンゴアダプター
- DoctrineORMAアダプタ
- DoctrineODMMongoDBAdapter
- DoctrineCollectionAdapter
- プロペラアダプター
- ソラリウムアダプター
ポケットベル、いくつかの既製のオプション、および多目的なカスタマイズの可能性を制御(表示)できます。
Githubプロジェクト
WhiteOctoberPagerfantaBundle
PagerfantaライブラリをSymfony 2プロジェクトに迅速かつ簡単に統合し、Twig関数、カスタムテンプレートなどの追加機能を使用できるバンドル。
ほとんどすべてのプロジェクトで使用されます。 Doctrine \ ORM \ NativeQueryオブジェクトのページ付け時にDoctrineORMAdapterに問題がありましたが、それでも解決策が見つかり、NativeQueryを使用して構築されたクエリ用のカスタムアダプタが作成されました。 今では修正されているようですが、Doctrine ORM 2.2のみです(このコミットが正しく理解されている場合)
github.comのプロジェクト
ファイルシステム
ゴーフレット
ファイルシステムの抽象化レベルを提供し、多数のメディアファイルの使用を伴うアプリケーションを、それらがどこにどのように保存されるかを考えずに開発できるようにするライブラリ。
この場合、抽象化を使用すると、コードにあまり手を加えることなく、ファイルの保存場所を変更できます。 プロジェクトが人気を博し、ファイルのスペースに問題がある場合、使用するファイルシステムをローカルからAmazon S3ファイルホスティングに変更するだけで、問題なくメディアデータをさらにスケーリングできます。 また、低速ファイルシステム(Amazon S3、FTP)の作業を高速化するために、ローカルキャッシュメカニズムが提供されています。
このライブラリは、SonataMediaBundleのファイルシステム抽象化レイヤーを提供します。
ローカルファイルシステムでのみ使用する必要があったため、FTPまたはAmazon S3で使用したユーザーのコメントを聞くのは興味深いことです。
github.comのプロジェクト
HTTPクライアント
バズ
PHP5.3のHTTPクライアント。 HTTPリクエストの送信(FileGetContents、Curl、MultiCurlを使用)、レスポンスの受信、Cookieの操作、HTTPヘッダー、フォームの送信、リクエスト履歴の操作などを行うことができます。
私はアプリケーションがあると思います)
github.comのプロジェクト
SensioBuzzBundle
このバンドルは、Buzzライブラリをサービスコンテナー(DI)としてSymfony 2プロジェクトに統合します。
github.comのプロジェクト
ふう!
今のところそれだけです...
はい、バンドルを検索するにはknpbundles.comを使用すると便利です。