\IPS\Helpers\Form\Radio string 0 - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

\IPS\Helpers\Form\Radio string 0

#1 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 27 Апрель 2019 - 15:04

Здравствуйте. У меня есть вот такое поле в форме:

		$form->add( new \IPS\Helpers\Form\Radio( 'map_loadingame', isset($settings['map_loadingame']) ? $settings['map_loadingame'] : 0, FALSE, array(
			'options' => array
			(
				0 => 'map_loadingame_screen',
				1 => 'map_loadingame_ingame'
			)
		), NULL, NULL, NULL, 'map_loadingame' ) );


Значения 0 и 1 возвращаются в виде строки, т.е условие срабатывает когда в нем 0 в "": "0". Пробовал отформатировать (int) $values['map_loadingame'] - не помогает. Как быть?

P.S.: Или это foreach в строку переводит? И соответственно там никогда не будет 0, можно сотавить "0" и проблем не будет, даже если сохранять
\IPS\Helpers\Form\Number ?

Сообщение изменено: TemKa_SD (27 Апрель 2019 - 15:06)

0

#2 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 812
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 487
  • IPB version:I have no IPB
 

Отправлено 30 Апрель 2019 - 07:44

Просмотреть сообщениеTemKa_SD сказал(а):

\IPS\Helpers\Form\Number ?

Это тут каким боком, если у Вас Radio?
Вопрос в чем? Сохранить или отобразить?
0

#3 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 30 Апрель 2019 - 07:54

Не до конца код похоже написал.

	public function updateAsSettings( $cfg_name, $settingValues )
	{
		if ( $this->id )
		{
			$result = iterator_to_array( \IPS\Db::i()->select( 'cfg_key', static::$cfgTable, array( 'cfg_name=?', $cfg_name ) ) );
			if( $result )
			{
			    foreach( $settingValues as $k => $v )
			    {
					if ($v != '0' AND $v != NULL)
					{
						if( \in_array( $k, $result ) )
						{
						    \IPS\Db::i()->update( static::$cfgTable, array( 'cfg_value' => $v ), array( 'cfg_name=? AND cfg_key=?', $cfg_name, $k ) );
						}
						else
						{
						    \IPS\Db::i()->insert( static::$cfgTable, array( 'cfg_name' => $cfg_name, 'cfg_key' => $k, 'cfg_value' => $v ) );
						}
					}
					else
					{
						\IPS\Db::i()->delete( static::$cfgTable, array( 'cfg_name=? AND cfg_key=?', $cfg_name, $k ) );
					}
			    }
			}
		} else {
			foreach ($settingValues as $k => $v) {
				if ($v != '0' AND $v != NULL)
				{
					\IPS\Db::i()->insert( static::$cfgTable, array( 'cfg_name' => $cfg_name, 'cfg_key' => $k, 'cfg_value' => $v ) );
				}
			}
		}
	}


Я сохраняю значения полей в своей функции таким образом, меня сильно смущет $v != '0' в кавычках, без них не работает.

Я тут подумал, скорей всего, если указать $v != 0 - оно будет считать 0 не значением, а как NULL, чтобы правильно обрабатывать это, нужно писать !== верно?
0

#4 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 812
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 487
  • IPB version:I have no IPB
 

Отправлено 30 Апрель 2019 - 08:08

https://www.php.net/...comparisons.php
0

#5 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 30 Апрель 2019 - 08:15

Из-за этого?

HTML-формы не передают целые, дробные числа или булевые переменные: они всегда передают строки. Для проверки является ли строка числом, используйте функцию is_numeric().

0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 446
  • Регистрация: 20-Март 09
  • Репутация: 2 545
  • IPB version:3.1.x
 

Отправлено 30 Апрель 2019 - 14:57

В чем проблема написать - $values['map_loadingame'] != ''

Ноль (string или число) не равно пустой строке.
Но сам ноль в boolean типе является false.
На будущее, использовать ноль в качестве значение какого-то параметра не самая лучшая идея.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна