私はこの質問のバリエーションが尋ねられたことを知っていますが、この特定の特性のセットで何も見つかりませんでした。また、私が知っている唯一のプログラミング言語はpythonです。わからないPHPまったくわからない。
Urlパラメータの値を、登録フォームのカスタム非表示フィールドに渡すことができるようにしたいのですが。
テーマ関数、テンプレートファイル、およびhook_form_alter()を使用してみましたが、これらを機能させることができませんでした。
これまでのところ、カスタムフィールドを追加できましたが、値を渡せることは言うまでもなく、非表示にできません。テンプレートファイルを介してフォームにhtmlを追加できますが、それはそれで終わりです。
私の試みはこのサイトに基づいています: themery
これは、メールのラベルを変更できるかどうかを確認しようとしたコードです。
function acq_dmc1_form_user_register_form_alter(&$form, &$form_state) {
$form['mail']['#title'] = t('E-mailzzzzzz');
$form['field_recipientid']['#title'] = t('QualID'); //this is the custom field
}
...しかし、うまくいきませんでした。
これはフォームidです。
<input type="hidden" name="form_id" value="user_register_form" />
これは、カスタムフィールドにレンダリングされるHTMLです。
<input class="text-full ckeditor-mod form-text" type="text" id="edit-field-recipientid-und-0-value"
name="field_recipientid[und][0][value]" value="[url:path]" size="90" maxlength="25">
編集:2013年6月17日誰かがこのコードを解決策としてくれましたが、それが機能するかどうか、またはどのように機能するかわかりません:
function passval_user_presave(&$edit, $account, $category) {
$fields = array(
'RecipientID' => array('fieldname'=>'field_recipientid', "type"=>'complex'),
'mail' => array('fieldname'=>'mail', "type"=>'simple'),
);
$urlargs = drupal_get_query_parameters();
foreach($fields as $key=>$field) {
if(isset($urlargs[$key])) {
$value = ($urlargs[$key]);
$value = intval($value);
if($field['type'] == 'complex') {
$edit[$field['fieldname']] = array('und'=>array(0=>array('value'=>$value, 'format'=>'', 'safe_value'=>$value)));
}
else {
$edit[$field['fieldname']] = $value;
}
}
}
}
タイプを非表示に設定するだけで、drupalで非表示のフォーム要素を作成できます。したがって、あなたの場合、それは次のように達成できます:
$form['field_recipientid']['#type'] = 'hidden';
Arg()関数を介してdrupalのURL引数にアクセスできます。したがって、ユーザー登録ページに何かを渡し、それをfield_recipientidに設定したい場合は、 " http://example.com/user/register/MLRP_8UByesUEfeeIA 」.
次に、同じフォームのalter関数から、arg(2)を呼び出してパスの3番目の項目を取得し、次のように値を設定します。
if (isset(arg(2))) {
$form['field_recipientid']['#value'] = arg(2);
}
非表示になっていない他のフォーム要素(テキストフィールドなど)でこれを行うことを考えている人は、#default_valueを使用してください。テキストフィールドに#valueを設定した場合、drupal forcableはその値のみを受け入れ、テキストフィールド値の編集を無視すると、ユーザーが行った可能性があります。
DrupalのフォームAPIの詳細については、 drupal APIサイトのフォームAPIリファレンスページ を参照してください。
これはあなたが望むモジュールだと思います ノード参照URL 。 RecipientIDというコンテンツタイプのフィールドを作成し、「URLからのノード参照」ウィジェットを使用するように設定します。その後、URL「node/add/MLRP_8UByesUEfeeIA」を介して変数を渡すことができ、モジュールはRecipientIDフィールドに自動的にデータを入力します。
hook_form_alter()でこれを実行する方法を示します。
フィールドのhook_form_alter()で「#default_value」を変更する必要があります。