0

「スーパー管理者」ユーザーが別のユーザーを作成し、ユーザー名とパスワードを設定できるプロジェクトで作業しています。 AutoForm quickFormは、Meteor.usersコレクション(Collection2を使用)に添付されたSimpleSchemaに基づいてフォームをレンダリングしています。 は、ユーザーのコレクションにスキーマを取り付ける上Collection2 docs勧告に続いて、私のスキーマは次のようになります。SimpleSchemaとAutoForm:レンダーパスワードフィールドを単一入力として

Usuarios.schema = new SimpleSchema({ 
    ... 
    username: { 
     type: String, 
    }, 
    services: { 
     type: Object, 
     optional: true, 
     blackbox: true 
    }, 
    "services.password": { 
     type: String, 
     optional: true, 
     autoform: { 
     type: 'password' 
     } 
    }, 
    ... 
}); 

レンダリングされたフォームは、次のようになります。 Rendered template

しかし、私はパスワードフィールドをレンダリングしたいと思いますUsernameのようなものです(サービスパネルなし)。 これには回避策が見つかりませんでした。私は、スキーマ内でServices Object型の属性を持たなければならないか、またはユーザーの挿入が失敗したときの検証(Accounts.createUser())が必要です。したがって、パネルはレンダリングされます(属性のオブジェクト型のため)。

希望のテンプレートレンダリングを達成する方法についてのアイデアはありますか?

答えて

0

パスワードがQuickFormのかquickFieldsを使用している場合、それが自動的にafObjectField内にレンダリングされている理由は「サービス」オブジェクトの一部です:

afObjectField

あなたがafQuickFieldコンポーネントを使用する場合フィールドが の場合は、 の型を変更するかオプションを指定しない限り、afObjectFieldコンポーネントを使用してレンダリングされます。これは、Object型のフィールドを持つスキーマに対して quickFormを使用すると、デフォルトで発生します。

afObjectFieldコンポーネントは、すべてのオブジェクトフィールドのサブフィールド を1つのグループとしてレンダリングします。グループには オブジェクトフィールドの名前が付けられます。グループの実際の視覚的表現は、あなたが使用するテーマテンプレートに基づいて に変わります。 "bootstrap3"デフォルトの テンプレートの場合、グループは見出しの付いたパネルに表示されます。

溶液A:手動フォームは、単一のフィールドとしてパスワードをレンダリングするために

のレンダリングは、手動でautFormを設定し、afFieldInputを使用してフィールドを参照する必要があります。フォームは、あなたがすべての特典を追加することが必要であること、あなたが望むとおりに見えますが、欠点を持っているという利点があり

{{> autoForm id="login" schema=Usuarios.schema}} 
    {{> afFieldInput type="text" name="username"}} 
    {{> afFieldInput type="password" name="services.password"}} 
{{/autoForm}} 

(検証:これをフォームmthenは(テストしていないが、コードは次のようになります)のように見えるかもしれませんメッセージなど)を手動で作成します。

溶液B:1つの入力フィールド:サービスグル​​ープのうち、パスワードを引くと、そのユーザー名と同じように、自動レンダリングのと同じ効果を持つことになり、あなたのスキーマ

を変更します。

Usuarios.schema = new SimpleSchema({ 
    ... 
    username: { 
     type: String, 
    }, 
    services: { 
     type: Object, 
     optional: true, 
     blackbox: true 
    }, 
    ... 
    password: { 
     type: String, 
     optional: true, 
     autoform: { 
     type: 'password' 
     } 
    }, 
    ... 
}); 
+0

ソリューションBが機能しました!プロジェクトの構造上、ソリューションAを使用できませんでした。ありがとうございました。 –

関連する問題