Symfony 2:便利なライブラリとバンドル

約6か月間、Symfony 2を使用してWebプロジェクトを開発してきましたsymfony-standardの一部ではない便利なライブラリとバンドルのリストが蓄積されましたが、時間を大幅に節約し、自転車の発明を保存します。



レビューはより理論的であり、次のセクションが含まれています。

使用例とコードの例は、github.comまたは公式サイトの各プロジェクトのページで調べることができますが、興味深い場合は、いくつかのソリューションを個別に検討することができます。


管理ジェネレーター


Sonataadminbundle

おそらく、コンテンツコントロールパネルを作成するための最も機能的なパッケージです。

以下と一緒に使用:

以下を管理できる適切な「管理パネル」を整理できます。

あります:


抽象化のために、DBとNoSQLが利用可能です:Doctrine、Propel。

安定したSymfony 2.0で安定。
2.0.10で使用しました。

SonataAdminBundleについては、すでにvitikoの 投稿がありました

プロジェクトサイト
github.comのプロジェクト
サンドボックス

管理者バンドル

エンティティを管理するためのよりシンプルで機能性の低いパッケージですが、より便利な(主観的な)カスタマイズメカニズムを備えています。 設定全体は、各エンティティのgenerator.ymlに記述されています。
あります:

それは多くの手作業を必要とし、多くの反復的なアクションのように思われましたが、注目に値すると思います。 エンティティごとに、パブリック部分に情報を表示するために、管理バンドルとバンドルを生成する必要がありました。



プロジェクトサイト
github.comのプロジェクト
サンドボックス
ビドス



ユーザー


FOSUserBundle

ユーザー管理のための広範な機能を提供するSymfony 2の最も人気のあるバンドルの1つ。 このパッケージは、ユーザーとの作業時に発生する主なタスクを実装します。

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サービスを作成するための便利なツールのバンドル。

機能:

モバイルアプリケーションのサーバー側を開発するときに非常に役立ちました。

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のプロジェクト



マルチメディア


想像してみて

通常のオブジェクト指向スタイルで画像を操作するためのライブラリ。 選択した画像に応じて、次のものが必要になる場合があります。

機能:

サムネイルを作成するための非常に便利なライブラリですが、これはすべての機能のほんの一部です。

作成時に、著者はPythonのPILライブラリに触発されました。

プロジェクトサイトとAPI
github.comのプロジェクト

AvalancheImagineBundle

Symfony 2プロジェクトで画像を簡単に操作するためのバンドル。
コレクションの画像を表示するためのさまざまなフィルターを構成できます。
フィルター設定:

選択したフィルターで対応する画像を表示するためのTwigタグ(関数)があります。 バンドルには、カスタムルートローダーもあります。 特定のコントローラーにアクセスすると、コントローラー(コントローラー)はイメージを生成し、サーバー応答として提供します。

このバンドルを使用して、サムネイルを動的に生成しました:

指定されたフィルター、バンドル設定、および要件を考慮して、画像へのパスを生成する関数を使用してTwig拡張機能を作成する必要があったことは事実でした。

便利に! または、モバイルアプリケーションのサーバー側に使用することもできます。設計コンセプトを変更する場合は、新しいフィルターを記述するだけで十分です。

github.comのプロジェクト

SonataMediaBundle

Symfony 2 + SonataAdminBundleのプロジェクトでさまざまなメディア(ファイル、ビデオ、画像)を管理(アップロード、削除、ギャラリーで整理)できるメディアライブラリ。

各タイプは、以下を担当するサービスプロバイダーによって管理されます。

メディアファイルはコンテキストに関連する場合があります。 コンテキストを使用すると、メディアセットをグループ化できます。たとえば、ニュース-ニュースコンテキスト、ユーザー-ユーザーコンテキストです。 メディアファイルの要件はコンテキストごとに異なる可能性があるため、コンテキストはメディアの変更に使用されるフィルター(構成で構成)を決定します。

フィルター設定:


このパッケージは、フィルターのサイズ変更およびトリミングロジックを実装する機能と、 LiipImagineBundle (fork AvalancheImagineBundle)の代替機能を提供します。



利用可能なサービス:

一般に、強力なパッケージですが、使用中に修正する必要がある小さな妨害がいくつかあります。 たとえば、メディアへのバインドを使用してエンティティを編集するときに画像のプレビューを表示します。

プロジェクトサイト
github.comのプロジェクト



フォーム


GenemuFormBundle

jQuery、jQuery UI、およびさまざまなプラグインを使用して、Symfony 2 Form Componentの機能を拡張するバンドル。

バンドルが提供するフォームタイプとウィジェットの一部は次のとおりです。

1つのプロジェクトですべての機能を使用する必要はほとんどありませんが、一部の実装をスパイすることは有用であり、時間を節約できます。

github.comのプロジェクト

キャプチャバンドル

このバンドルは、Symfony 2フォームコンポーネントのキャプチャサポートを追加します。
基本的な設定セットが含まれていますが、必要に応じて、必要な機能を追加/変更できます。

私は本当に非常に速くする必要があったので、バンドルを修正しなければなりませんでしたが、次回は正直にPRします)))

github.comのプロジェクト



検索する


スフィンクスバンドル

Sphinxが何であるかを伝えるべきではない、誰もが知っているべきだと思います。 したがって、SphinxBundleは、Sphinx検索インデックスを操作できるバンドルです。 動作させるには、 公式サイトの sphinxapi.phpライブラリが必要です。

インデックスには、エンティティテーブル(検索が実行されるエンティティ)に応じて、各エンティティの識別子(id)が必要です。 検索デーモンへの要求の後、見つかったレコードの識別子(id)を使用して、エンティティ自体が検索クエリに関連するデータベースから取得され、ページごとのナビゲーションの可能性があります。

このバンドルは多くの機会を提供しませんが、タスクを実装するためのベースとして大いに役立ちました。 たとえば、複数のエンティティを操作するロジックを実装する必要がありました(スフィンクスインデックスは複数のエンティティテーブルにも作成する必要があります)。各エンティティのビューで、後で「検索スニペット」(それぞれに異なるテキストブロックエンティティ)およびリンクを生成するためのルート、なぜなら エンティティはサイトのさまざまなセクションに表示されていました。

github.comのプロジェクト



ページネーション


パゲルファンタ

PHP 5.3のデータセットの「ページネーション」ライブラリ。

ページ分割するデータのタイプに応じて、さまざまなアダプタークラスを使用します。

ポケットベル、いくつかの既製のオプション、および多目的なカスタマイズの可能性を制御(表示)できます。

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を使用すると便利です。

Source: https://habr.com/ru/post/J142541/


All Articles