2 つの異なるアプリケーション (フロントエンド、バックエンド) を持つ symfony アプリケーションがありますが、共通のアクションが 1 つあります。今、私は両方のアプリでそのコードを複製しましたが、それはまったく好きではありません.
複数のsymfonyアプリケーションでアクションを再利用する方法はありますか?
2 つの異なるアプリケーション (フロントエンド、バックエンド) を持つ symfony アプリケーションがありますが、共通のアクションが 1 つあります。今、私は両方のアプリでそのコードを複製しましたが、それはまったく好きではありません.
複数のsymfonyアプリケーションでアクションを再利用する方法はありますか?
最も簡単な方法はlib
、共有メソッド/アクションを使用してアクション基本クラスを作成することです。次に、この機能を使用する必要があるモジュールは、 の代わりにその基本クラスを拡張するだけですsfActions
。
method_not_found
また、おそらくsfComponentのイベント リスナーを使用することもできます。ただし、メソッドが実際のアクションである場合、期待どおりに機能しない可能性があります (また、特別な検出ロジックがなくても、すべてのモジュールとすべてのコンポーネントで使用できます)。
最も複雑な方法は、プラグインを作成することです。もちろん、それには、任意のモデルで動作するロジックを動的にする必要があるため、スキーマの関連部分をプラグインのスキーマに構成または分離できます。
さらに2つのオプション:
1)Linuxを使用している場合は、actions.class.phpへのシンボリックリンクを作成します。同じテンプレートを共有している場合は、モジュール全体へのシンボリックリンクを作成します。
cd apps/backend/modules/name
ln -s ../../frontend/modules/name name
2)開発にあまり進んでいない場合は、プロジェクトをリファクタリングして、アプリケーションを1つだけにします(私のお気に入り)。
モジュール (およびそのアクション) を共有したい場合、適切な方法はプラグインを作成することです。