私は、AbstractTypeを拡張するPostTypeフォームを持っています。コントローラでは、特定の条件が満たされている場合は、フィールドを追加したいと思います。何とかこれを行うことができますか、コントローラのFormTypeを変更するためのベストプラクティスがありますか?私はあなたがあなたのフォームにブール値のオプションを追加し、あなたのコントローラで設定するべきだと思いフィールドをFormTypeフォームに動的に追加することはできますか?
おかげ
私は、AbstractTypeを拡張するPostTypeフォームを持っています。コントローラでは、特定の条件が満たされている場合は、フィールドを追加したいと思います。何とかこれを行うことができますか、コントローラのFormTypeを変更するためのベストプラクティスがありますか?私はあなたがあなたのフォームにブール値のオプションを追加し、あなたのコントローラで設定するべきだと思いフィールドをFormTypeフォームに動的に追加することはできますか?
おかげ
Form Eventsを使用するとできます。
確かにフォームのコレクションタイプを使用してフィールドを動的に追加できます。 以下のリンクを参照してください。これは、フィールドを動的に作成する方法に役立ちます。
Link1: Dynamic Field in Symfony2
Link2: Form Collection in symfony2 doc
これら2つのリンクがあなたのお役に立てば幸いです。 ハッピーコーディング..
コレクションですか?これが私が探しているものかどうかは分かりません。 – DavidW
みましょうあなたは以下の通りのFileTypeタイプのフォームを持っていると言う:
<?php
namespace EventFlowAnalyser\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class FileType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'text', array('label' => 'Name'));
}
public function getName()
{
return 'file';
}
}
あなたはこのようなあなたのコントローラで使用することができます:$ドキュメントがオブジェクトである場合は
$form = $this->createForm(new FileType(), $document);
1つのフィールド(の名前)を含む。 別の関数でフォームオブジェクトにフィールドを追加する必要がある場合は、FileTypeを拡張して、必要なフィールドを追加することができます。たとえば、名前フィールドを編集したいが、前の状態を追跡したい場合は、オリジナル名フィールドを追加します。
<?php
namespace EventFlowAnalyser\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use EventFlowAnalyser\Form\EventListener\EditFileFieldSubscriber;
class FileEditType extends FileType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('original_name', 'hidden', array('mapped' => false));
}
}
さて、あなたはそのような拡張形式を使用することができます
$form = $this->createForm(new FileEditType(), $document);
をそして、そのようなフィールドの値を変更します。
$form->get('original_name')->setData($document->name);
私は、これはsomenoneを助けることを願っています。o )
ありがとう、これは私の必要な解決策のようです。 – DavidW