ログインフォームを次のように変更しました
if (form_id == 'user_login_form') {
form.submit.Push('my_module_user_login_submit');
}
送信するには、uidが必要です。
function my_module_user_login_submit(form, form_state) {
//I need the uid of login user here;
if(form_state.values.name){
form.action = 'user-dashboard/'+ uid;
}
}
試した
var uid = Drupal.user.uid;しかし、機能していません。
より詳しい情報
function my_module_menu() {
var items = {};
items['user-dashboard/%'] = {
title: 'User dashboard',
page_callback: 'my_module_user_dashboard_page',
page_arguments: [1],
pageshow: 'my_module_user_dashboard_pageshow'
};
return items;
}
**
* The user dashboard page callback.
* @param uid
* @returns {{}}
*/
function my_module_user_dashboard_page(uid) {
var content = {};
// Build an empty container where the user dashboard will go.
var attributes = {
id: my_module_user_dashboard_container_id(uid),
class: 'user-dashboard'
};
content['my_widget_container'] = {
markup: '<div ' + drupalgap_attributes(attributes) + '>' +
'Loading dashboard...' +
'</div>'
};
return content;
}
/**
* The user dashboard pageshow event handler.
* @param uid
*/
function my_module_user_dashboard_pageshow(uid) {
alert(Drupal.user.uid);
// Load the user account...
user_load(uid, {
success: function(account) {
var content = {};
content['txt'] = {
markup: '<div>' + account.name + '</div><div>' + account.uid + '</div>'
};
// Inject it into the container.
var container_id = my_module_user_dashboard_container_id(uid);
$('#' + container_id).html(drupalgap_render(content)).trigger('create');
}
});
}
function my_module_user_dashboard_container_id(uid) {
return 'user-dashboard-' + uid;
}
アプリでこのフックを使用してみてください: http://api.drupalgap.org/7/global.html#hook_services_postprocess
/**
* Implements hook_services_postprocess().
*/
function my_module_services_postprocess(options, result) {
if (options.service == 'user' && options.resource == 'login') {
drupalgap_goto('user-dashboard/'+ Drupal.user.uid);
}
}
DrupalGapコアがフォームのaction
変数で示されるパスにページをリダイレクトしようとしないように、フォームオブジェクトのnull
をaction
に設定する必要がある場合もあります。 :
/**
* Implements hook_form_alter().
*/
function my_module_form_alter(form, form_state, form_id) {
if (form_id == 'user_login_form') {
form.action = null;
}
}