2017-02-22 97 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

我在说的是,你只是处理你的结果的第一行,因为你正在'foreach'循环内执行'return'。 – 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) –

相关问题