1

FormBuilder で個々のフォーム フィールド名を設定する方法はありますか?

私が意味するのは、通常は is を取得するform_name[field_name]か、 form_name が空の文字列の場合は を取得するということですfield_name

ここで、個々のフィールド名を変更してもフォームが機能するかどうかを尋ねたいと思います。このようなもの:

第 1 フィールドname="form_name[field_name]"
第 2 フィールドname="renamed_fildname"
第 3 フィールドname="form_name[field_name]"
など...

それで、これは可能ですか?

詳細な説明:これは私が達成しようとしていることです:フォームクラス を持つデフォルトの Symfony ユーザー エンティティ しかし、有効なフォームにはフィールドが必要です。
_username_password_token

フォームに名前を追加しようとすると、次のようになります。

public function getName(){ return '_'; }

すべての名前がこの形式になります。_[field_names]これはトークンには適していますが、ユーザー名とパスワードのフィールドには適していません。その必要があります_username_password、実際にはそうで_[username]あり、_[password]これは私にとっては良くありませんし、セキュリティバンドルにとっては単に悪い資格情報をスローするだけです.

4

3 に答える 3

4

あなたは物事を複雑にします。あなたのフォームクラスはログインフォームには役に立ちません。フォームクラスはエンティティを操作する場合の優れたユーティリティですが、2つのフィールドを送信して、ログインチェックに渡すだけで済みます。したがって、エンティティを更新または作成することはありません。しかし、これは実際にフォームクラスが必要な場所です。

ドキュメントを読む:http ://symfony.com/doc/current/book/forms.html#creating-form-classes


あなたはこれを学びたいと言いましたが、あなたはそれを間違った方法で学びます。http://symfony.com/doc/current/book/security.html#using-a-traditional-login-formでアドバイスされているように、ログインフォームとしてフォームクラスではなく、単純な小枝テンプレートを使用する必要があります。


フォームフィールドのロジックは、実際には、そのフォームがオブジェクトであり、括弧内の名前が属性であるため、次のようになります。

product[description]

フォームが「製品」エンティティを処理していることを示すフォームフィールドであり、「説明」である特定のフィールドで説明テキストを入力する必要があります。


FOSUserBundleを使用します: https ://github.com/FriendsOfSymfony/FOSUserBundleは車輪の再発明をしません;)

于 2013-02-08T15:01:21.490 に答える
0

もう1つは、フォーム名を使用してログインパラメーターを簡単に構成できることです。

username_parameter: "account_login[username]"
password_parameter: "account_login[password]"
csrf_parameter: "account_login[_token]"
于 2013-02-08T15:14:23.903 に答える