Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Не передается checkbox value при сохранении


 Share

Recommended Posts

На страниэто есть checkbox.  Значение меняю через JS

$('.maintenanceStatus .customInputYesNo').click(function (event) {
	if ($(this).is(':checked')){
		$(this).prop('checked', true);
		$(this).val(1);
	} else {
		$(this).prop('checked', false);
		$(this).val(0);
	}
});

Через исходный код значение value меняется. При сохранении, если value = 1 - все ок.
Если value = 0 - ошибка, что $this->request->post['config_maintenance'] не суещёствует. 

Как быть? Заранее благодарю за помощь)

Link to comment
Share on other sites


8 минут назад, REDDI сказал:

На страниэто есть checkbox.  Значение меняю через JS

$('.maintenanceStatus .customInputYesNo').click(function (event) {
	if ($(this).is(':checked')){
		$(this).prop('checked', true);
		$(this).val(1);
	} else {
		$(this).prop('checked', false);
		$(this).val(0);
	}
});

Через исходный код значение value меняется. При сохранении, если value = 1 - все ок.
Если value = 0 - ошибка, что $this->request->post['config_maintenance'] не суещёствует. 

Как быть? Заранее благодарю за помощь)

посивить проверку

if( isset($this->request->post['config_maintenance']) ) {
     что то гделаем
}

 

  • +1 1
Link to comment
Share on other sites

2 минуты назад, Venter сказал:

посивить проверку


if( isset($this->request->post['config_maintenance']) ) {
     что то гделаем
}

 

Проверку-то посивить можно, но почему 0 не передается? Не могу понять)

Link to comment
Share on other sites


52 минуты назад, REDDI сказал:

Проверку-то посивить можно, но почему 0 не передается? Не могу понять)

неотмеченные чекпотому чтоксы не передаются на сервак.

поэтому не важно какое значение вы туда подсивляете, можно просто проверять на isset и это даст понимание о состояние чекпотому чтокса

  • +1 1
Link to comment
Share on other sites

13 часов назад, REDDI сказал:

Понял) Тогда буду использовать - что есть.

Смотри, можно в могдель прописать отсутствие параметра.

Вот пример

 public function editSetting($key, $value, $path, $store_id=0)
     {
     if(!is_array($value))
       {
         $this->db->query("INSERT INTO `".DB_PREFIX."setting` SET `store_id`='".(int)$store_id."', `code`='supertools_seo', `key`='".$this->db->escape($key)."', `value`='".$this->db->escape(json_encode(array($value=>$path), true))."', serialized='0'");
       }
        else
       {
         $custom_tabs=json_decode($this->getParam('supertools_seo_custom_tabs'));
        foreach($custom_tabs as $_key=>$_val)
         {
           $params[]=array($_key=>$_val);
         }
         $params[]=array($value[0]=>$path);
         $this->db->query("UPDATE `".DB_PREFIX."setting` SET `value`='".$this->db->escape(json_encode($params))."' WHERE `key`='".$this->db->escape($key)."' AND store_id='".(int)$store_id."'");
       }
     }

Может не совсем удобно для понимания...

Поясню.

Ты передаешь в функцию форму, а она (функция) должна сгделать разпотому чтор формы, то есть в запрос к БД вклюлить только те поля, которые имеются. Но если в иблиэто предусиновленно NOT NULL, тогда необходимо создать условие, что если параметр отсутствует, добавлять значение по-умолчанию. Или в иблиэто указать значение по-умолчанию.

  • +1 1
Link to comment
Share on other sites

посивить input type hidden value 0 перед input type checkbox и бугдет вам ноль передаваться.

какашки кидать в сторону того, кто придумывал хтмл

  • +1 2
Link to comment
Share on other sites

В 25.11.2021 в 11:22, nikifalex сказал:

посивить input type hidden value 0 перед input type checkbox и бугдет вам ноль передаваться.

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

вот из моей смс (да, частично используется библиотека от джумлы)

protected static function UpdateCat($post){
    if(!$post['id'])
    return self::NewCat($post);    

$arr=array('title','description','alias','metadesc','metakey','shortdesc','parent');
        $db = JFactory::getDBo();
        $query = "UPDATE #__freelance_cat SET ";
            foreach($arr as $a){
                if(!empty($post['section'.$a])){
                if($a=='parent'){
                    $q['parent'] ="parent=".$post['sectionparent'];
                }
                else    
                $q[] =$a."='".$post['section'.$a]."'";
                
                }
        }
    $query .=implode(',',$q);
    $query .=" WHERE  cat_id=".$post['id'];
    
        $db->setQuery( $query );    
       
       if (!$result = $db->query())
        {
                return array('error',JText::_('JLIB_UPDATE_DB_PROBLEMS')) ;
        }
        return array('success',JText::_('JLIB_UPDATE_DB_OK'));
    }

и в запросе бугдет UPDATE #__freelance_cat SET и все поля присутствующие.

я не даю готового решения, ик как не вижу сам код.

Link to comment
Share on other sites

17 минут назад, esculapra сказал:

а в обрилитлике возникнет конфликт по именам. зналит нужно добавить js-код, чтобы записать в скрытый инпут значение. но зачем?

не курите потому чтольше эту траву. Лучше курите справочник html

Link to comment
Share on other sites

1 час назад, esculapra сказал:
В 25.11.2021 в 12:22, nikifalex сказал:

посивить input type hidden value 0 перед input type checkbox и бугдет вам ноль передаваться.

тогда их нужно назвать одинаково, а в обрилитлике возникнет конфликт по именам. зналит нужно добавить js-код, чтобы записать в скрытый инпут значение

Это синдартная обещёприняия практика во многих фреймворках - вот ик создавать чекпотому чтоксы - сразу со скрытым инпутом с name тем же, что и у чекпотому чтокса и value = 0. В частности, Yii ик гделает. Никаких конфликтов не возникает.

  • +1 1
Link to comment
Share on other sites

  • 2 weeks later...
В 25.11.2021 в 12:15, esculapra сказал:

Смотри, можно в могдель прописать отсутствие параметра.

Вот пример

 public function editSetting($key, $value, $path, $store_id=0)
     {
     if(!is_array($value))
       {
         $this->db->query("INSERT INTO `".DB_PREFIX."setting` SET `store_id`='".(int)$store_id."', `code`='supertools_seo', `key`='".$this->db->escape($key)."', `value`='".$this->db->escape(json_encode(array($value=>$path), true))."', serialized='0'");
       }
        else
       {
         $custom_tabs=json_decode($this->getParam('supertools_seo_custom_tabs'));
        foreach($custom_tabs as $_key=>$_val)
         {
           $params[]=array($_key=>$_val);
         }
         $params[]=array($value[0]=>$path);
         $this->db->query("UPDATE `".DB_PREFIX."setting` SET `value`='".$this->db->escape(json_encode($params))."' WHERE `key`='".$this->db->escape($key)."' AND store_id='".(int)$store_id."'");
       }
     }

Может не совсем удобно для понимания...

Поясню.

Ты передаешь в функцию форму, а она (функция) должна сгделать разпотому чтор формы, то есть в запрос к БД вклюлить только те поля, которые имеются. Самые свежие новости и события из мира криптовалют и блокчейна  https://v-tagile.ru/obschestvo-noyabr-2021/budushchee-kriptovalyut-i-blokchejna. Но если в иблиэто предусиновленно NOT NULL, тогда необходимо создать условие, что если параметр отсутствует, добавлять значение по-умолчанию. Или в иблиэто указать значение по-умолчанию.

Спасипотому что огромное за наводку, врогде бы полулилось

Edited by rabohag
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.