2017-10-24 2 views
0

こんにちは私はDrupal 8でカスタムモジュールを作成しようとしていますが、モジュールの要件はその中にいくつかのフィールドがあるフォームを持つことです。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, 
    ); 
    } 

フォーム検証コードは、それが

$form_state->setErrorByName('name', $this->t('Enter a valid name')); 

と同様に文書化されている一部のページではDrupalのドキュメントによると、この

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')); 
    } 
    } 

のように見えるようになります。いくつかのページは、それが記載されている

$form_state->setErrorByName('$name', $this->t('Enter a valid name')); 

妥当性確認の正しい構文は何ですか?

はこれが正しいものであるsetErrorByName( '$名')とsetErrorByName( '名前')

答えて

0
$form_state->setErrorByName('name', $this->t('Enter a valid name')); 

間differnceを観察します。

 $name = $form_state->getValue('name'); 
     if(preg_match("/^[a-zA-Z ]*$/", $name)) { 
     $form_state->setErrorByName('name', $this->t('Enter a valid name')); 
     } 
+0

答えてくれてありがとうしかし、どのような実際には「名前」のsetErrorByNameに意味がある私はsetErrorByName(「blabla」)を書く場合もあるので(「名前」)は、それは?フィールド名や変数名やいくつかのダミーの名前ですか、 setErrorByName( '$ name')検証が正常に実行されます。 – miststudent2011

+0

名前は$ form ['name'] – user3575353

+0

です。setErrorByName( 'blabla')を書くと、検証がうまくいかない理由は何ですか? – miststudent2011