2

parameters.iniフォームからアクセスする必要があります。

もちろん、コントローラーからアクセスできます。

$myVal = $this->container->getParameter('my_val');

それをコントローラーに渡します。

$demoForm = $this->createForm(new demoFormType($myVal), $demoObject);

そして、コンストラクターに渡されるこの値を保存する形式で (もちろん、明示的に実装する必要があります)。

ただし、このフォームはいくつかのコントローラーで使用されるため、フォーム クラスから何らかの「魔法の」方法で単純にアクセスする方がはるかにクリーンです。

出来ますか???それに対する答えは見つかりませんでした。

ありがとう!

4

3 に答える 3

2

あなたが提案する方法でそれを行うことが最善のアイデアであるかどうかはわかりません。フォームはそのように構成にバインドされるべきではありません。

代わりに、継承元の新しいコントローラーを作成することもできます。

namespace Your\Bundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Your\Bundle\Form\Type\demoFormType;

class FormAwareController extends Controller
{
  protected function createDemoForm( $demoObject )
  {
    $myVal = $this->container->getParameter( 'my_val' );
    return $this->createForm( new demoFormType( $myVal, $demoObject ) );
  }
}

そして、必要な場所でこのクラスを拡張します

namespace Your\Bundle\Controller;

class SampleController extends FormAwareController
{
  public function indexAction()
  {
    $demoObject = new stdClass; // or whatever
    $form = $this->createDemoForm( $demoObject );

    // etc...
  }
}
于 2012-05-16T13:55:57.333 に答える
0

フォームをサービスとして定義し、%parameter% 表記を使用してパラメーターを渡します。コントローラーは、初期化プロセスについて何も知らなくても、サービスを取得できます。

この手法は、エンティティ マネージャーやその他の依存関係を設定する場合にも非常に役立ちます。

于 2012-05-17T12:13:45.463 に答える