Jump to content

Установка настраиваемого поля в качестве обязательного поля

Featured Replies

Я использую настраиваемые поля как для приложения под названием Application Forms, так и для Commerce.

Почти все настраиваемые поля имеют возможность установить их как обязательные поля, за исключением некоторых. В моем случае я хочу, чтобы «флажок» действовал как обязательное поле.

Я пошел в system > CustomField и отредактировал CustomField.php. Я смог показать параметр обязательного поля, но он просто не работает. Это просто визуально.

Spoiler

        $toggles = array(
            //Added the following line:
            'Checkbox'        => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions" ),
            'CheckboxSet'    => array( 'pf_content', 'pf_not_null', 'pf_search_type_on_off', "{$form->id}_header_pfield_displayoptions" ),
            'Codemirror'    => array( 'pf_not_null', 'pf_max_input', "{$form->id}_header_pfield_displayoptions" ),
            'Email'            => array( 'pf_not_null', 'pf_max_input', 'pf_input_format', 'pf_search_type', "{$form->id}_header_pfield_displayoptions" ),
            'Member'        => array( 'pf_not_null', 'pf_multiple', "{$form->id}_header_pfield_displayoptions" ),
            'Password'        => array( 'pf_not_null', 'pf_max_input', 'pf_input_format', "{$form->id}_header_pfield_displayoptions" ),
            'Select'        => array( 'pf_not_null', 'pf_content', 'pf_multiple', 'pf_search_type_on_off', "{$form->id}_header_pfield_displayoptions" ),
            'Tel'            => array( 'pf_not_null', 'pf_max_input', 'pf_input_format', 'pf_search_type', "{$form->id}_header_pfield_displayoptions" ),
            'Text'            => array( 'pf_not_null', 'pf_max_input', 'pf_input_format', 'pf_search_type', "{$form->id}_header_pfield_displayoptions" ),
            'TextArea'        => array( 'pf_not_null', 'pf_max_input', 'pf_input_format', 'pf_search_type', "{$form->id}_header_pfield_displayoptions" ),
            'Url'            => array( 'pf_not_null', 'pf_max_input', 'pf_input_format', 'pf_search_type', "{$form->id}_header_pfield_displayoptions" ),
            'Radio'            => array( 'pf_content', "{$form->id}_header_pfield_displayoptions", 'pf_search_type_on_off' ),
            'Address'        => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions" ),
            'Color'            => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions" ),
            'Date'            => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions" ),
            'Editor'        => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions", 'pf_search_type', 'pf_allow_attachments' ),
            'Number'        => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions"),
            'Poll'            => array( 'pf_not_null' ),
            'Rating'        => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions" ),
            'Upload'        => array( 'pf_not_null', "{$form->id}_header_pfield_displayoptions" ),
        );

Я также пошел в system > Helpers > Form > Checkbox.php, но я понятия не имею, что там редактировать. 😅

Link to comment
https://ipbmafia.ru/topic/24152-ustanovka-nastraivaemogo-polya-v-kachestve-obyazatelnogo-polya/
Share on other sites

Думаю, это очень непросто сделать. 

 

2 minutes ago, Desti said:

I think this is very difficult to do. 

Слишком много работы?

BlackShot какой смысл делать это поле обязательным, если там в итоге будет всегда только один вариант?
разве что для принятия псевдоправил.

4 minutes ago, by_ix said:

разве что для принятия псевдоправил.

Хороший вопрос, и если я правильно понял, то это и есть ответ. Я хочу сделать это обязательным полем, тогда как форма не будет отправлена, если пользователь не установил флажок. Что-то вроде согласия с условиями обслуживания, понимаете?

11 часов назад, BlackShot сказал:

Слишком много работы?

Yep. You can insert such a field manually

$form->add( new \IPS\Helpers\Form\Checkbox( 'agreed_terms_lang', FALSE, TRUE, array( ), function( $val )
{
	if ( !$val ) { 
 		throw new \InvalidArgumentException('agreed_terms_warn'); 
	}
}, NULL ) );

 

11 hours ago, Desti said:

Yep. You can insert such a field manually

$form->add( new \IPS\Helpers\Form\Checkbox( 'agreed_terms_lang', FALSE, TRUE, array( ), function( $val )
{
	if ( !$val ) { 
 		throw new \InvalidArgumentException('agreed_terms_warn'); 
	}
}, NULL ) );

 

I've added it to the proper file and unset its value - it works! The only downside to this is it adds a checkbox for every form created, whereas I only wanted it to show for specific ones. But that's still better than changing so much code, right? Thanks, Desti 🏆

You can create new settings (array ), for example "showConfirmCheckbox" (in App...Form application), add number of your forms with checkbox ( [2,3,6] ) and use this settings for enable-disable checkbox. 

if( \in_array( \IPS\Request::i()->id, \IPS\Settings::i()->showConfirmCheckbox ) ) {
  $form->add( new \IPS\Helpers\Form\Checkbox......
}

 

1 hour ago, Desti said:

You can create new settings (array ), for example "showConfirmCheckbox" (in App...Form application), add number of your forms with checkbox ( [2,3,6] ) and use this settings for enable-disable checkbox. 

if( \in_array( \IPS\Request::i()->id, \IPS\Settings::i()->showConfirmCheckbox ) ) {
  $form->add( new \IPS\Helpers\Form\Checkbox......
}

Genius! I'll try that soon and let you know if I had success. 

PS: I completed a basic PHP course and now I'm trying to study object oriented PHP like you recommended, but I still feel like it's going to be a loooong fucking journey. Shit is difficult. I'm trying though. xD

7 часов назад, BlackShot сказал:

Shit is difficult. I'm trying though. xD

This is not difficult, just a lot of information. Difficult is quantum mechanics :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.