Jus*_*ime 5 javascript php jquery drupal form-api
我确信这对jQuery专家来说很简单,但我是一个后端人,并且找不到最好的方法来做到这一点.我在Drupal中有两个数组,一个是视图名称列表,另一个是包含每个视图的显示列表的数组.这是填充两个数组的代码:
//load list of views in to array for select lists
$views = views_get_all_views();
$viewnames = array();
$viewdisplays = array();
foreach ($views as $view) {
$viewnames[$view->name] = $view->name;
foreach ($view->display as $k) {
$id = $k->id;
$title = $k->display_title;
$viewdisplays[$view->name]['id'] = $id;
$viewdisplays[$view->name]['title'] = $title;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的表单的片段:
$form['view'] = array(
'#type' => 'select',
'#title' => t('Select the view to be used for display'),
'#options' => $viewnames,
);
$form['view_display'] = array(
'#type' => 'select',
'#title' => t('Select the display of the gallery view to be used'),
'#options' => array(),
);
Run Code Online (Sandbox Code Playgroud)
我想要做的是,使用适当的值动态填充view_display选择框.如果用户从"视图"选择中选择"我最喜欢的视图",我想将$ viewdisplays ['我最喜欢的视图']数组显示为'view_display'字段的#options.
完成你所要求的事情并不是一件困难的事情。
Drupal 知道选择的表单项有哪些选项,因为它保留了表单的副本。因此,您需要使用它可以具有的所有选项来预先填充要更改的选择的选项。此外,您还需要确保它们的值是唯一的,这样您就不会得到如下所示的数组:
array(
1 => 'a-a',
2 => 'a-b',
3 => 'a-c',
4 => 'a-d',
1 => 'b-a',
2 => 'b-b',
)
Run Code Online (Sandbox Code Playgroud)drupal_add_js($array, 'setting')
。这会将 添加到变量$array
中Drupal.settings
。hook_menu
。现在,您只需对视图选择中的更改做出反应,并相应地添加它们的选项,无论是从 ajax 调用还是从 js 变量获取它们。我建议使用变量方法。这可能看起来像这样:
$("#edit-view").change(function(){
$("#edit-view_display").html(Drupal.settings.myVariable[$(this).val()]);
}).change();
Run Code Online (Sandbox Code Playgroud)
您需要将此 js 添加到您的表单中。您可以将其放入 js 文件中,将其包装$(document).ready
并添加drupal_add_js
归档时间: |
|
查看次数: |
4611 次 |
最近记录: |