【发布时间】:2017-10-24 13:55:40
【问题描述】:
您好,我正在尝试在 Drupal 8 中编写一个自定义模块,该模块的要求是有一个包含一些字段的表单。
我已经编写了包含一些字段的表单,并对输入数据执行了验证。
表单字段代码如下所示
public function buildForm(array $form, FormStateInterface $form_state) {
$form['name'] = array(
'#type' => 'textfield',
'#size' => 15,
'#title' => t('Name'),
'#default_value' => 'user',
'#maxlength' => 15,
'#required' => TRUE,
'#weight' => 1,
);
}
表单验证代码如下所示
public function validateForm(array &$form, FormStateInterface $form_state) {
$name = $form_state->getValue('name');
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$form_state->setErrorByName('name', $this->t('Enter a valid name'));
}
}
根据某些页面中的 Drupal 文档,它被记录为
$form_state->setErrorByName('name', $this->t('Enter a valid name'));
在某些页面中它被称为
$form_state->setErrorByName('$name', $this->t('Enter a valid name'));
我怀疑验证的正确语法是什么?
观察 setErrorByName('$name') 和 setErrorByName('name') 的区别
【问题讨论】: