Drupal8のインラインエンティティフォームを使用していますが、カスタム検証の記述に問題があります。いくつかのリンクが見つかりましたが、まったく役に立ちませんでした。誰もがこれを処理する方法を知っていますか?
以下に示すモジュールでカスタム検証を行うには、インラインフォームの変更を使用する必要があります
/**
* {@inheritdoc}
*
* Implements hook_form_alter().
*/
function module_inline_entity_form_entity_form_alter(&$entity_form, &$form_state) {
// Added custom validation
if ($entity_form['#bundle'] == 'bundle_name') {
$entity_form['#element_validate'][] = '_custom_validate_function';
}
}
そして、以下のようにその検証を実装します。
/**
* Custom validation.
*/
function _custom_validate_function(&$form, FormStateInterface $form_state) {
$triggering_element = $form_state->getTriggeringElement();
$values = $form_state->getValues();
// or you can use $form_state->getValue('field_name')
// Validate your functionality
// Set Error for form
$form_state->setError($form, t("message"));
// Note: $name may be unknown in $form_state and
// $form_state->setErrorByName($name, $message) may suppress the error message.
// hence use above $form_state->setError()
}