【问题标题】:Passing radio input from view to controller codeigniter4将无线电输入从视图传递到控制器codeigniter4
【发布时间】:2021-02-06 15:47:07
【问题描述】:

我希望选定的值从视图传递到控制器,但它不起作用,我尝试了一百种不同的方法来实现它,我尝试使用复选框而不是无线电,它有效,但我不能选择产品,它只是一直选择第一个产品,使用 set radio,我看到当我想选择产品时,它添加了 checked=checked 但它没有传递给控制器​​。

控制器.php

public function form()


    {


            helper(['form']);

    
            $projectModel = new ProjectsModel();


            if ($this->request->getMethod() == 'post') {


                    $rules = [


                            'firstname' => 'required|min_length[3]|max_length[20]',
                            'lastname' => 'required|min_length[3]|max_length[20]',
                            'email' => 'required|min_length[6]|max_length[60]|valid_email|is_unique[accounts.email]',
                            'company' => 'required|min_length[3]|max_length[20]',
                            'location' => 'required|min_length[3]|max_length[20]',
                            'address' => 'required|min_length[3]|max_length[20]',
                            'product' => 'required',
                            


                    ];


                    if(!$this->validate($rules)) {
                            $data['validation'] = $this->validator;
                    }

                    else {

                            $newData = [
                                    'id' => session()->get('os_id'),
                                    'firstname' => $this->request->getVar('firstname'),
                                    'lastname' => $this->request->getVar('lastname'),
                                    'email' => $this->request->getVar('email'),
                                    'company' => $this->request->getVar('company'),
                                    'location' => $this->request->getVar('location'),
                                    'address' => $this->request->getVar('address'),
                                    'product' => $this->request->getVar('product'),

                            ];

                            $projectModel->save($newData);

                            session()->setFlashdata('success', 'Successful updated');
                            return redirect()->to('form/success');
                    }

            }


            $data['user'] = $projectModel->where('id', session()->get('id'))->first();
            
            echo view('templates/header', $data);
            echo view('form', $data);
            echo view('templates/footer', $data);
    }

查看.php

/>
<div class="col-sm-4">
  <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="shirt">
       <input type="radio" name="product[]" value="2" <?php echo set_radio('product', '2'); ?> />
          <div class="icon">
              <img class="icons" src="../shirt.svg" alt="" style="width:45%;margin-top: 25%;">
           </div>
      </div>
  </div>

  <div class="col-sm-4">
     <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="Chiloti">
       <input type="radio" name="product[]" value="3" <?php echo set_radio('product', '3'); ?> />
         <div class="icon">
             <img class="icons" src="../tshirt.svg" alt="" style="width:45%;margin-top: 25%;">
         </div>
      </div>
  </div>


  <div class="col-sm-4">
     <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="shirt">
       <input type="radio" name="product[]" value="4" <?php echo set_radio('product', '4'); ?> />
          <div class="icon">
              <img class="icons" src="../shirt.svg" alt="" style="width:45%;margin-top: 25%;">
           </div>
      </div>
  </div>

  <div class="col-sm-4">
     <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="shirt">
       <input type="radio" name="product[]" value="5" <?php echo set_radio('product', '5'); ?> />
          <div class="icon">
              <img class="icons" src="../shirt.svg" alt="" style="width:45%;margin-top: 25%;">
           </div>
      </div>
  </div>

<div class="col-sm-4">
  <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="shirt">
       <input type="radio" name="product[]" value="5" <?php echo set_radio('product', '6'); ?> />
          <div class="icon">
              <img class="icons" src="../shirt.svg" alt="" style="width:45%;margin-top: 25%;">
           </div>
      </div>
  </div>

  <div class="col-sm-4">
     <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="Chiloti">
       <input type="radio" name="product[]" value="7" <?php echo set_radio('product', '7'); ?> />
         <div class="icon">
             <img class="icons" src="../tshirt.svg" alt="" style="width:45%;margin-top: 25%;">
         </div>
      </div>
  </div>


  <div class="col-sm-4">
     <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="shirt">
       <input type="radio" name="product[]" value="8" <?php echo set_radio('product', '8'); ?> />
          <div class="icon">
              <img class="icons" src="../shirt.svg" alt="" style="width:45%;margin-top: 25%;">
           </div>
      </div>
  </div>


  <div class="col-sm-4">
     <div class="choice" data-toggle="wizard-radio" rel="tooltip" title="shoes">
        <input type="radio" name="product[]" value="9" <?php echo set_radio('product', '9'); ?> />
                      <div class="icon">
                       <img class="icons" src="shoes.svg" alt="" style="width:45%;margin-top: 25%;">
                     </div>
     </div>
   </div>
             </div>
          </div>
      </div>

【问题讨论】:

    标签: codeigniter-4


    【解决方案1】:

    只是一个刺,但根据CI's documentationset_radio 的第一个参数应该是字段的名称属性。

    您已为该无线电组指定了一个通用名称“product[]”,但您将“product”作为第一个参数传递给 set_radio

    我正在查看set_radio 的代码,它对方括号没有任何作用,所以我看不出这两个字符串匹配的任何原因。

    【讨论】:

    • 是的,括号在那里是因为我试图为多张图像制作它,几个小时后我终于找到了它为什么不起作用。它是由 JS 中的某些东西引起的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    相关资源
    最近更新 更多