web-gelistirme-sc.com

"#markup" form öğesinin alt öğesi olamaz

Formum var, ancak "#markup" öğesinin herhangi bir alt formu, form işlenirken görünmez.

$form['html'] = array(
  '#type' => 'markup',
  '#markup' => '<h2>My Heading</h2>',
  '#tree' => true,
);

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
);

Bu örnekte "eleman" form alanı oluşturulmayacaktır.

Bu bir Drupal hata mı, yoksa belirli bir şey yapmam gerekiyor mu?

7
user1589

"#Tree" öğesinin "#markup" öğesiyle kullanılamaması, form API'sinin başvuru sayfası "#tree" öğesinin "#markup" öğesi tarafından desteklendiğini bildiriyor .

Geçici çözüm olarak, aşağıdaki kodda olduğu gibi "#prefix" özelliğini de kullanabilirsiniz:

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
  '#prefix' => '<h2>My Heading</h2>',
);

Beklediğiniz gibi işlenmezse, istediğiniz tek şey <h2>My Heading</h2> etiketini form alanlarından önce. Form API'si, öğeleri dizide göründükleri sırayla işler; siparişi değiştirmek isterseniz, " # weight " özelliğini kullanabilirsiniz.

$form['html'] = array(
 '#type' => 'markup',
 '#markup' => '<h2>My Heading</h2>',
);

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
);
8
kiamlaluno

Biraz daha kesin olmak gerekirse, #markup tipi elemanlar oluşturulmaz. Bununla birlikte, form amaçları için işlenirler.

1
user49