web-dev-qa-db-ja.com

#valueと#markupの違いは何ですか?

私はdrupalリンクを経由して、以下に示すようなものを含みました
https://drupal.org/node/2243

マークアップには「#value」ではなく「#markup」を使用してください

(問題)drupal_render()に渡されるフォームまたはその他の構造化配列データ(ノードコンテンツなど)のアイテムの新しいデフォルトタイプは '#type' => 'markup'です。 Drupal 6以前では、#value属性を使用してHTMLコンテンツが配列に追加されました。Drupal 7では、これを#markupに変更する必要があります。この変更は、 '#type' => 'item'のフォーム要素にも適用されます。この変更により、フォームの値とマークアップの混乱が軽減され、drupal_render()のコードが簡略化されます。

例1、system.admin.incからDrupal 6:

<?php
  $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $theme->info['name'])), '', array('class' => 'screenshot'), FALSE) : t('no screenshot');

  $form[$theme->name]['screenshot'] = array('#value' => $screenshot);
?>

Drupal 7:

<?php
  $screenshot = $screenshot ? theme('image', array('path' => $screenshot, 'alt' => t('Screenshot for %theme theme', array('%theme' => $theme->info['name'])), 'attributes' => array('class' => 'screenshot'))) : t('no screenshot');

  $form[$theme->name]['screenshot'] = array('#markup' => $screenshot);
?>

drupal 6にコードがあります。これは以下のとおりです。

$form['in_title'] = array(
  '#type' => 'button',
  '#value' => t('ort'),
  '#executes_submit_callback' => false,
  '#attributes' => array('class' => 'hide-submit-exclude'),
);

このコードをD7に変換したい。
では、#markupと#valueをいつ、どこで使用すればよいですか?
#markupと#valueの違いを知りたい

3
harshal

#markup

フォームに出力されるHTMLを設定するために使用されます。

#value

ユーザーが編集できない値を設定するために使用されます。 #default_valueと混同しないでください。これは、ユーザーがデフォルト値を上書きできるフォーム入力用です。

ために #valueこれには、送信ボタン、非表示要素などが含まれる可能性があります。基本的に、フォーム送信に値を必要とするすべてのものですが、その値はユーザーから取得されるべきではありません。

サンプルコードで行う必要がある唯一の変更は、attributes配列のクラスが配列自体に存在する必要があるという事実を考慮に入れることです。

$form['in_title'] = array(
  '#type' => 'button',
  '#value' => t('ort'),
  '#executes_submit_callback' => false,
  '#attributes' => array('class' => array('hide-submit-exclude')),
);
2
Clive