2017-02-22 38 views
2

Я хочу получить флажки из базы данных и отобразить их в форме и при нажатии на отправке новые значения должны обновляться в Prestashop.Извлечь флажковые значения из базы данных и отобразить их в форме и отправить в prestashop

Я сделал foreach с выбранными значениями базы данных, но отображается только одно значение.

Мой код:

protected function getConfigForm() 
{   
    $sql = 'SELECT id_order_state,name FROM '._DB_PREFIX_.'order_state_lang'; 
    $results = Db::getInstance()->ExecuteS($sql);  
    foreach ($results as $row) { 
     return array(
      'form' => array(
       'legend' => array(
        'title' => $this->l('Settings'), 
        'icon' => 'icon-cogs', 
       ), 
       'input' => array(     
        array(
         'type' => 'checkbox', 
         'label' => $this->l('Select Required Status'), 
         'required' => true, 
         'values' => array(
          'query' => array(
           array(
            'id' => 'AllFields', 
            'name' => $this->l('All Fields'), 
            'val' => 'All', 
           ), 
           array(
            'id' => 'OrderID', 
            'name' => $this->l($row['name']), 
            'val' => $row['id_order_state'], 
            'required' => true, 
           ), 
          ), 
          'id' => 'id', 
          'name' => 'name' 
         ), 
        ), 
       ), 
       //  array(
       //   'type' => 'text', 
       //   'name' => 'EXPORTORDERS_LOCATION', 
       //   'label' => $this->l('Export Location'), 
       // ), 
       'submit' => array(
        'title' => $this->l('Save'), 
       ), 
      ), 
     ); 
    } 
} 
+0

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

+0

, потому что в моей базе данных сохранено много статусов, я хочу показать все статус на странице конфигурации как флажок, поэтому я использовал foreach для отображения всего на этой странице, но только один показывает –

+0

. Я говорю, что вы только обрабатывая первую строку ваших результатов, потому что вы делаете 'return' внутри цикла foreach. – BizzyBob

ответ

1

Вы возвращаетесь из метода внутри цикла foreach. Затем вы возвращаетесь с одним значением. Вы должны сначала создать массив значений внутри цикла foreach, а затем построить свою форму:

protected function getConfigForm() 
{   
    $sql = 'SELECT id_order_state,name FROM '._DB_PREFIX_.'order_state_lang'; 
    $results = Db::getInstance()->ExecuteS($sql); 

    $values_query = array(array(
     'id' => 'AllFields', 
     'name' => $this->l('All Fields'), 
     'val' => 'All', 
    )); 
    foreach ($results as $row) { 
     $values_query[] = array(
      'id' => 'OrderID', 
      'name' => $this->l($row['name']), 
      'val' => $row['id_order_state'], 
      'required' => true, 
     ); 
    } 

    return array(
     'form' => array(
      'legend' => array(
       'title' => $this->l('Settings'), 
       'icon' => 'icon-cogs', 
      ), 
      'input' => array(     
       array(
        'type' => 'checkbox', 
        'label' => $this->l('Select Required Status'), 
        'required' => true, 
        'values' => array(
         'query' => $values_query, 
         'id' => 'id', 
         'name' => 'name' 
        ), 
       ), 
      ), 
      'submit' => array(
       'title' => $this->l('Save'), 
      ), 
     ), 
    ); 
} 
+0

вы правы, все идет правильно, но я хочу его в трех или четырех слоях, потому что список слишком велик. список, идущий вертикально вниз слишком долго, есть ли способ сделать его в 4 слоя? –

+0

Как сделать все проверено при нажатии на все поля? можете ли вы дать решение для этого и выше запроса? –

+0

Это, на мой взгляд, другая тема. Не могли бы вы создать новый Вопрос для этого конкретного требования переднего плана? И принять этот ответ, если он разрешит вашу первоначальную проблему? [Как принимается ответ?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –