Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba

Form Submit onChange without submit Button


Go to End
Reply


3 Posts   812 Views

Avatar
Andre

Community Member, 136 Posts

6 October 2013 at 12:02am

Hi,

I have written a simple Dropdown Form with Submit Button, to change/select the page language.

Here is the code:

<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class BootstrapNavbarLanguageForm extends Form {
 
    public function __construct($controller, $name, $fields = null, $actions = null) {
        
        $Laguages = array();
            
        foreach(LocaleGeoip::get_available_languages() as $Locale => $Language){
            $Languages[$Locale] = _t('BootstrapNavbarLanguageForm.'.$Language, $Language);
        }

        // Create fields
        $fields = new FieldList(
            $locale = new DropdownField('Locale', "", $Languages, i18n::get_locale())
        );
        $locale->addExtraClass('span2');
        // Create actions
        $actions = new FieldList(
            $submit = new FormAction('updateLang', _t('BootstrapNavbarLanguageForm.SUBMIT','BootstrapNavbarLanguageForm.SUBMIT'))
        );
        $submit->addExtraClass('btn');

        parent::__construct(
            $controller,
            $name,
            $fields,
            $actions
        );
    }

    public function updateLang(array $data){

        if($o_Member = Member::currentUser()) {

            $o_Member->Locale = $data['Locale'];

            $o_Member->write();
        }
            
        i18n::set_locale($data['Locale']);
            
        Session::set('Locale', $data['Locale']);
        
        Controller::curr()->redirectBack();
    }
}

Now I want this form to be used without the submit button. It just should submit on changing the dropdown. I know, I can work here with jQuery and that is not the problem.

But how to I create the code and the submit actions, without adding a(visible) submit button?

I can try to add an empty $action. But how do I tell the form, to use the updateLang method, when being submitted?

Avatar
Andre

Community Member, 136 Posts

10 October 2013 at 1:49am

Anyone with an idea here?

Avatar
martimiz

Forum Moderator, 1199 Posts

10 October 2013 at 2:26am

Why not make the action (button) invisible using css?