it-swarm.asia

لا يمكن أن يحتوي عنصر النموذج "#markup" على أطفال

لدي النموذج الخاص بي ، ولكن لن يظهر أي عنصر تابع لعنصر "#markup" عند تقديم النموذج.

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

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

في هذا المثال ، لن يتم تقديم حقل نموذج "العنصر".

هل هذا خطأ في Drupal أم أحتاج إلى القيام بشيء محدد؟

7
user1589

يبدو عدم القدرة على استخدام "#tree" مع عنصر "#markup" خطأً في Drupal ، حيث الصفحة المرجعية لتقارير واجهة برمجة التطبيقات للنموذج التي يدعمها عنصر "#tree" بواسطة عنصر "#markup" .

كحل مؤقت ، يمكنك أيضًا استخدام خاصية "#prefix" ، كما في التعليمات البرمجية التالية:

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

إذا لم يتم تقديمه كما تتوقع ، فيمكنك ببساطة إزالة "#tree" من الشفرة الخاصة بك ، والتي لا يبدو أنها ضرورية ، إذا كان كل ما تريده هو تقديم <h2>My Heading</h2> علامة قبل حقول النموذج. تعرض واجهة برمجة تطبيقات النموذج العناصر التالية للترتيب الذي تظهر به في الصفيف ؛ إذا كنت تريد تغيير الترتيب ، يمكنك استخدام خاصية " # weight ".

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

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

لكي أكون أكثر دقة ، أطفال #markup لا يتم تقديم عناصر الكتابة. ومع ذلك ، تتم معالجتها لأغراض الشكل.

1
user49