問題タブ [craueformflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
forms - Symfony2 フォームの繰り返し要素のカスタム ラベル
Symfony2 とCraueFormFlowBundleを使用していますマルチステップ フォームを作成します。私の繰り返しの電子メールフィールドを除いて、すべてがうまくいっています。私は、私のために、私が望むラベルを付ける方法を見つけることができません。form_widget(...) を使用して Twig ビューで自分でフォームをレンダリングし、ラベルを書いています。私はクライアントが望むものに従ってすべてを配置します。ここで、彼は電子メールのラベルを「電子メール*」および「電子メールの確認*」として表示したいと考えています (星は必須であるため)。form_row() を使用して繰り返し要素をレンダリングすると、フォームにエラーが表示されなくなります (ただし、ラベル、スナップを制御できます)。エラーが表示される唯一の方法は (理由は聞かないでください)、繰り返される要素オブジェクト全体を指す form_widget(form.giver.email) を使用することです。問題は、form_widget を使用して繰り返される要素全体をレンダリングすることで、ラベルを制御できないことです。
繰り返される要素全体をレンダリングすることにより、「first_name」および「second_name」パラメーターを使用してラベルを出力します。明らかな理由により、これらのパラメーターに大文字、ダッシュ、星を入れることはできません。オプション配列にラベルを設定しようとすると、Symfony2 doc で説明されているように、そのラベルが両方のフィールドに渡されます...
twig で ".first" と ".second" を使用して印刷しようとしましたが、これらが FormView に存在しないというエラーが表示されます。
今私が欲しいのは、2 つのラベルを別々に設定できることだけです! これが私の現在のコードです:
これにより、ラベルが「email」および「confirm」として出力されます。ここでは、「オプション」配列を使用しています。
これにより、両方の繰り返しフィールドに「TESTTT」ラベルが印刷されます。これについて私にできることはありますか?上記のように、フォームの送信時に form_row() を使用しても、メールが等しくない場合や空白の場合、エラーは表示されません。したがって、 form_widget() を使用して、繰り返されるオブジェクト全体をレンダリングする必要があります。
お時間をいただきありがとうございます。
forms - Symfony2に新しいフォームレイアウトをどのように追加しますか?
私のSymfony2プロジェクトでは、フォームをレンダリングするためのレイアウトオプションが2つしかないことに気づきました。
form_table_layout.html.twig
と
form_div_layout.html.twig
これらは両方ともにあり、自分のディレクトリsymfony\src\Symfony\Bridge\Twig\Resources\views\Form
のどこかに自分のものを追加したいと思います。app\Resources
私が抱えている唯一の問題は、新しいレイアウトファイル(form_list_layout.html.twig
)をに追加するapp\Resources\views\Form
と、Symfonyはそれを検索せず、代わりにデフォルトの場所(Twigディレクトリ)を検索することです。
新しいレイアウトを含めるように調整config.yml
しましたが、何か間違ったことをしている可能性があります。
編集:さて、私は今Symfony2を正しい場所で見ていますが、フォームのレンダリングには何の影響も与えていないようです(テストするためにテーブルレイアウトファイルの内容を新しいリストレイアウトファイルにコピーしました理論上、フォームはまだ<div>
タグを使用してレンダリングされています。これは、CraueFormFlowBundle
使用していることが原因である可能性があるため、確認します)。
働くconfig.yml
:
編集2:とは何の関係もないように見えますがCraueFormFlowBundle
、グローバルフォームレイアウトを無視する原因となる可能性のあるものが構成にありますか?
編集:実際には、それは機能しています。テーブルレイアウトコンテンツの代わりにリスト要素を含めるようにレイアウトファイルを変更するとすぐに、問題がないように見えました。
php - Symfony2: エンティティではないオブジェクトを検証する
CraueFormFlowBundle を使用して複数ページのフォームを作成しており、いくつかのフィールドで検証を行おうとしていますが、これを行う方法がわかりません。検証が必要なオブジェクトはエンティティではないため、問題が発生しています。
フォーム タイプ クラスの getDefaultOption 関数に collectionConstraint を追加しようとしましたが、「配列タイプまたは Traversable および ArrayAccess の引数が必要です」というエラーが発生するため、これは機能しません。オブジェクト クラスでアノテーションを試してみましたが、考慮されていないようです。クラスがエンティティでない場合、注釈は考慮されますか? (enable_annotations を true に設定)
とにかく、これを行う適切な方法は何ですか?基本的に、「年齢」が整数であることを検証したいだけです...
編集: コードを追加し、注釈を使用して検証を処理します
Cyprianとして、私は注釈を使用することはうまくいくはずだと確信していましたが、そうではありません...私が試した方法は次のとおりです。
私のコントローラーで:
私のデータクラス (サービス yop.poem.datacollector) である私の PoemDataCollector クラスでは:
EDIT2:
サービスの実装は次のとおりです。データ クラス (PoemDataCollector) は、フォームではなくフロー クラスにリンクされているようです。
craueFormFlowBundleガイドラインを尊重しながら検証を行うにはどうすればよいですか?
ガイドラインには次のように記載されています。
これらの検証グループを使用するには、どこに制約を記述すればよいですか?
私は試した:
しかし、それは考慮されません。
EDIT3:
OK、はるかに良いです。名前の検証は次のように機能しているようです:
メッセージは表示されませんが... テンプレートに {{ form_errors(form.name) }} と {{ form_errors(form) }} を入れました... なぜ表示されないのですか?
しかし:
全然効かない…
EDIT4:
よし、なんとか検証が機能するようになりました..しかし、エラーメッセージを表示する方法が見つかりません。使用時に表示されるはずではありませんか:
また
私のテンプレートで?私の場合、検証が失敗すると、フォームの同じステップに戻りますが、エラー メッセージは表示されません。さらに、$form->getErrors() は空の配列を返します! エラーを処理するには?
php - CraueFormFlowBundleでファイルをアップロードできません
CraueFormFlowBundleを使用してマルチステップ形式でファイルをアップロードしようとしています。
すべてが正常に機能していますが、プロセスの最後に、以前は機能していたファイルパスでエンティティが更新されることはありません。
これが基本的に私がやろうとしていることです:
私のエンティティがこのように設定されている間:
$flow->saveCurrentStepData();
が呼び出されると、$form['file']
いっぱいになり、一時ファイルを指しているようです。
私が得られないのは、次のステップでファイル値がセッションに保存されない理由です。
私はこのようなgetSessionData()
方法を拡張しましたCraue\FormFlowBundle\Form\FormFlow
:
これにより、予想どおり、「ファイル」以外のすべてのフォームデータが得られます。
このバンドルでファイルのアップロードを機能させる方法は?
forms - 既存のエンティティを編集するときに CraueFormFlowBundle をナビゲートする
CraueFormFlowBundleを使用して複数ページのフォームを作成しました。このフォームを使用して、新しいエンティティ オブジェクトを作成したり、既存のエンティティ オブジェクトを編集したりできます。
次に、設定を追加しました
フォームのページを前後に移動できるようにしますが、フォームを使用して既存のオブジェクトを編集する場合、フォーム内の任意のページに直接ジャンプできるようにしたいと考えています。これは機能していないようです。オブジェクト データが読み込まれ、目的のページに到達するまで [次へ] を繰り返し押すことができます。
CraueFormFlowBundle を使用して編集するときにページ ナビゲーションをレンダリングする方法はありますか?
私のテンプレートには以下が含まれます:
ナビゲーションを作成します。編集アクションは次のとおりです。
php - Craue フォーム フローは、最後のステップの $flow->isValid() で false を返します
私はCraueFormFlowBundleでフォーム ウィザードを作成しましたが、$flow->isValid() が失敗する最後のステップまで機能し、フォーム ウィザード アクションの目的の最後に移動する代わりに、常に最後のステップをレンダリングします。
私がどこを間違えたのかを理解するために必要なコードは次のとおりです。
コントローラ:
services.yml:
BookingType.php:
予約フロー:
最後に小枝ファイル:
追加の検証はまったくありません。そのフィールドを空にすることはできません。最後のステップに到達し、Finish
ボタンをクリックすると、Symfony が「フォームは有効です」という値で JSON を生成すると思っていましたが、最後のステップを何度も繰り返すだけです。そのセクションをデバッグすると、終了をクリックすると $flow->isValid($form) に false が返されますが、前のステップはすべて true であり、ここで JSON 応答を返すことはできません。
小枝で form と form->getErrors の値もダンプしていますが、エラーが発生しているようなものはありません。そのデータを永続化しようとすると、正常に永続化されます。
バンドルのgitページでこれに対する解決策が見つかりませんでした。ここにいる皆さんは、どこで解決策を探すべきか知っていますか?
php - Symfony 2 : CraueFormFlowBundle と FOSUserBundle を使用したマルチステップ フォーム
私のアプリケーションでは、新しいユーザーを登録するための複数ステップのフォームを作成する必要があるため、CraueFormFlowBundleをインストールし、 FOSUserBundle も使用しています。
登録フォームの最初のステップで、ユーザーの情報 (ログイン、パスワードなど) を FOSUserBundle に登録した後、ユーザーはフォームの次のステップにリダイレクトされます。
そのため、フォーム タイプのコレクションを「RegistrationEtablissementForm」という単一のタイプに埋め込んでいます。
しかし、マルチステップフォームのビューをレンダリングしようとすると、次のエラーが発生します:
警告: FOS\UserBundle\Form\Type\RegistrationFormType::__construct() の引数 1 がありません。C:\wamp\www\likabee_3\src\AppBundle\Form\RegistrationEtablissementForm.php の 14 行目で呼び出され、定義されています
タイプ RegistrationEtablissementForm :
そして最初のフォームタイプ:
二番目 :
そして3番目:
私の services.yml ファイルでは、FOSUserBundle に登録するためのフォームと、マルチステップ フォームが有効になっている has service :
私のコントローラーでは、ビューでフォームをレンダリングするためにこの関数を作成しました:
解決策を数日間検索しますが、見つかりません...
助けてくれてありがとう、そして私の英語でごめんなさい;)
symfony - Symfony2、CraueFormFlowBundle でマルチステップを形成
CraueFormFlowBundleを使用してマルチステップ フォームを構築しようとしています。ひとまず最初のステップ(利用者情報)に行けるのですが、「次へ」ボタンをクリックするとエラーになります。
最初のステップは User エンティティに基づくフォーム データ型で、2 番目のステップはエンティティ Etablissement (別のエンティティ) に基づく別のフォーム データ型です。
私のエラーメッセージがあります:
フォームのビュー データはクラス AppBundle\Entity\Etablissement のインスタンスであると予想されますが、クラス AppBundle\Entity\User のインスタンスです。このエラーを回避するには、「data_class」オプションを null に設定するか、クラス AppBundle\Entity\User のインスタンスを AppBundle\Entity\Etablissement のインスタンスに変換するビュー トランスフォーマーを追加します。
ファイル構成手順:
私のコントローラーで:
2番目のステップに行くとき、フォームはEtablissementタイプではなくユーザータイプを待っていると思いますが、これを解決する方法がわかりません...
前もって感謝します ...