Перейти к содержанию

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


Рекомендуемые сообщения

Я использую настраиваемые поля как для приложения под названием 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, но я понятия не имею, что там редактировать. 😅

Ссылка на комментарий
Поделиться на другие сайты

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

 

Ссылка на комментарий
Поделиться на другие сайты

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 :)

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...