2016-12-03 4 views
0

私はsymfonyで動作するように学んでいると、すべてが非常に見栄えが、私はいくつかのカスタムフォームを作成する必要があると私は私の場合でproccedする方法を知りません。symfonyのフォームフィールド操作

Magentoの上のXML定義ファイルに基づいて動的なフォームなどを構築する方法はありますか?私が達成したいのは、フォームがビルドされているときに決定されたカスタムカスタム入力タイプで、ユーザー/管理者用のプレゼンテーションとしてデータベースのキー値ストレージを持つフォームをビルドすることです。

これをする可能性はありますか?

ありがとうございます。

+0

。 PS:StackOverflowのガイドライン、[StackOverflowでどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[どうすれば良い質問ができますか?](http: /stackoverflow.com/help/how-to-ask)。 –

答えて

2

残念ながら、Form Componentは、この機能を提供していません。 しかし、あなた自身で実装したり、サードパーティのバンドルを使用することができます。

FormBuilderInterfaceform generationのための素敵な宣言型のAPIです。 独自の構成形式を定義し、それを使用してフォームを構築することができます。例えば

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use DOMDocument; 

class XmlBasedFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     // Better if the format will be as similar to the FormBuilder options: 
     $formConfig = DOMDocument::loadXML(<<<'XML' 
      <form> 
       <field name="foo" type="text" label="Foo"/> 
       <field name="bar" type="textarea" label="Bar"/> 
       <field name="baz" type="checkbox" label="Baz"/> 
      </form> 
XML 
     ); 

     foreach ($formConfig->getElementsByTagName('field') as $fieldElement) { 
      $name = $fieldElement->getAttribute('name'); 
      $type = $fieldElement->getAttribute('type'); 
      $label = $fieldElement->getAttribute('label'); 

      // Build a form element: 
      $builder->add($name, $type, ['label' => $label]); 
     } 
    } 
} 

また、Config Component、この場合に有用であり得ます。

しかし、すべてのフォーム機能を完全に実装するには、多くの作業が必要です。Dynamic Form Bundleのようなサードパーティのソリューションを使用している場合。そのバンドルは、YAML設定ファイルによってSymfonyフォームを生成します。 (私は、このソリューションでいくつかの経験を持っているし、それがうまく動作します。)あなたがsymfonyで必要なすべてを構築することができますが、溶液中に組み込まれて存在しない

+0

それは素晴らしいと思います。あなたは私の友人が私をもっとはっきりと案内しました。私は今私の頭の中でこのような複雑な解決策を持っていたが、あなたは私にシンプルな道筋を示した。あなたへの誇り。 – Nebunel

+0

私は助けてうれしいです。しかし、フォームは実際には複雑なものであり、それらを完全に宣言的に記述しようとする試みは常に困難です。 – Timurib

+0

私はあなたが私に言ったことに基づいて、私が必要としているもので最善を尽くします。基本的には、私は、将来私が設定キーを追加するかどうか分からないので、マゼンタスタイルの設定領域を構築したいと思います。フォームの入力のXML定義が最良の方法だと思っています。痛みが少しあります) – Nebunel

関連する問題