1

いくつかの基本的な機能を備えた基本バンドルと、高度な特定の機能のための特定のバンドルを備えたコントロールパネルアプリケーションを作成しています。

たとえば、ベースバンドルはユーザー認証を処理し、すべてのテンプレートアセットを保持し、他のバンドルはオペレーティングシステムのさまざまな部分を構成する機能を追加します。

ベースバンドルのレイアウトにメニューリンクを他の各バンドルに追加できるようにする必要があります。また、さまざまなクライアントの機能を組み合わせて使用​​できるように、各バンドル構成でこれを行うことを好みます。

コンパイラパス、拡張機能、依存性注入についてすべて読んだのですが、運がありませんでした。それをすることの正しいことはありますか?

4

2 に答える 2

0

Twigを使用している場合、これでうまくいくはずです...

{% render "DifferentBundle:ControllerName:functionalityName" with {'argument_name': 3} %}

functionalityNameActionこれを機能させるには、DifferentBundle コントローラーにメソッドが必要です。

ドキュメントの「テンプレートの作成と使用 - コントローラーの埋め込み」セクションをご覧ください。

それが役に立てば幸い。

于 2012-10-15T19:07:29.100 に答える
0

誰かが同様の問題を抱えている場合に備えて、これをどのように達成したかを次に示します。

__get 、 __set 、 __isset 、および __unset マジック メソッドを実装し、追加の追加メソッドを持つ BaseBundle にサービスを作成しました。クラス内の静的変数に変数を格納します。次に、すべてのバンドルにリスナーを追加しました。

namespace Mbs\OtherBundle\Listener;

use Mbs\BaseBundle\Services\GlobalVars;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;

class ControllerListener
{
    protected $_global_vars;

    public function __construct(GlobalVars $global_vars)
    {
        $this->_global_vars = $global_vars;
    }

    public function onKernelController(FilterControllerEvent $event)
    {
        $this->_global_vars->append('bundles', 'mbs.other');
    }
}

これは、バンドルの 1 つに対する私の services.yml です。GlobalVars は、先ほど説明したクラスです。

services:
    mbs.base_controller_listener:
        class: Mbs\OtherBundle\Listener\ControllerListener
        tags:
            - { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
        arguments:  [ @mbs.global_vars ]
于 2012-10-21T11:14:40.003 に答える