カスタム登録を作成する最良の方法は何ですかtwigテンプレート?
私はフックを実装しました:
function THEMENAME_theme_suggestions_form_alter(array &$suggestions, array $variables) {
$suggestions[] = 'form__' . $variables['element']['#form_id'];
}
Si私はフォームtwig formなどのテンプレートの提案を取得します--user-register-form.html.twig
次に、「要素」を使用して、必要なすべての値を呼び出すことができます。
{{ element.field_name }}
私の唯一の問題は、画像フィールドのajaxを使用したフィールド検証でエラーが発生することです。画像をアップロードすると、サーバーから画像サイズがphpの制限サイズを超えているというエラーメッセージが表示されます(これは明らかにそうではありません)。
だから私は{{ children }}
in my twigテンプレートを正しく機能させるためのテンプレートです。唯一の悪い点は、{{children}}を呼び出すと、実際にフォーム全体が呼び出されることです......
私は何か間違ったことをしていますか?上記のものを達成するための最良の方法ですか?それは...ですか {{ children }}
フォームを機能させるために呼び出す必要がありますか?
単純なフォームの場合...
... {{ element }}
の代わりに{{ children }}
を使用してform
テンプレートにテーマを設定できます。参照 作成方法twigでテンプレートファイルdrupalユーザーログインをカスタマイズするための8、プロファイルの編集、およびパスワードフォームを忘れた場合? 。
ただし、フォームが動作するために必要なすべてのフォーム要素とメタデータを含めることは難しいため、これが常に最良のアプローチであるとは限りません。
複雑なフォームの場合...
...完全なフォームではなく、内部フォーム要素のみをレンダリングする必要がある追加のテンプレートレベルを追加する方が簡単な場合があります。
/**
* Implements hook_form_FORM_ID_alter() for \Drupal\user\RegisterForm.
*/
function mytheme_form_user_register_form_alter(&$form, FormStateInterface $form_state) {
$form['#theme'] = 'user_register_form';
}
カスタムテンプレートはhook_theme
に登録する必要があります。段階的な例については、 *。themeファイルから特定のフォーム要素をレンダリングする方法 を参照してください。