Ajaxコールバックを介してコールバック関数にデータを送信する「ブートストラップモーダルダイアログ」にフォームをロードする必要があります。
モーダルダイアログを起動すると、フォームが正しく表示されます。
<a data-toggle='modal' href='?q=document/share' data-target='#Modalshare' class='ModalTrigger'>
<div class='' style='float:right;'><span class=''><span title='' class='glyphicon glyphicon-share-alt'></span></span></div>
<a/>
メニュー「ドキュメント/共有は、モーダルコンテンツを表示する関数「modal_share()」を呼び出します
<div>...
content
...<div>
この関数modal_share()内で、レンダリングのためにフォームが呼び出されます。
function modal_share($fid) {
$f = drupal_get_form('modal_share_form',$fid);
....
....
echo <div> .... ".drupal_render($f) .".....</div>
}
これまでのところ、モーダルは以下の構造のように「modal_share_form」の形式で正しく出力されます。
function modal_share_form($form,&$form_state,$fid) {
form['share_list'] = array(
'#type' => 'select',
'#multiple' => TRUE,
'#options' => $option ,
'#title' => t(""),
'#description' => "",
'#required' => false,
'#default_value' => $default
);
$form['share'] = array (
'#type' => 'button',
'#value' => "<span class='glyphicon glyphicon-share-alt'></span><span id=''> ".t('record')."</span>",
'#ajax' => array(
'callback' => "modal_share_form_submit",
'wrapper' => 'shareMessage',
'effect' => 'fade',
'method'=>'html'
),
'#id' => 'modalsharebutton',
);
return $form;
}
ここでの問題は、ボタンの#ajax関数がdrupalによって正しくレンダリングされないことです。
hTMLレンダリングは次のとおりです。
<button id="modalsharebutton" class="btn btn-primary form-submit" type="button" value="<span class='glyphicon glyphicon-share-alt'></span><span id=''>record</span>" name="op">
「ajax-processed」クラスが添付されていない
重要なのは、メインページにフォームをロードすると、ajax関数が適切にレンダリングされることです。
だから私の結論は、モーダル用のフォームを構築するとき、それは適切なajax構築プロセスを通過していないということです...
しかし、私は解決策を見ることができません。
手伝ってくれてありがとう。
イベントで '#attribute'を追加して、この問題を別の方法で解決しました...
$form['share'] = array(
'#type' => 'button',
'#value' => "<span class='glyphicon glyphicon-share-alt'></span><span id=''> " . t('Record') . "</span>",
'#ajax' => array(
'callback' => "modal_share_form_submit",
'wrapper' => 'shareMessage',
'effect' => 'fade',
'method' => 'html'
),
'#id' => 'modalsharebutton',
'#attributes' => array('onclick' => "share_submit($fid);"),
);
ありがとうございました。