php 如何在CodeIgniter中对多个视图使用单个控制器

mcdcgff0  于 2023-04-28  发布在  PHP
关注(0)|答案(1)|浏览(111)

我正在使用codeigniter 4,我有两个不同的“表单”(视图中的两个不同文件)现在我正在尝试将“第二个表单数据”(第一个表单数据已经成功提交)保存到数据库(表名为“additional_info”,列/字段(ID,user_id,地址,性别),我如何做到这一点?简而言之,我想知道以下的事情
1.假设我在管理面板上工作,我必须保存多个表单数据,那么我应该为此创建不同的多个控制器或模型吗?
1.如果没有,那么我们如何用单个控制器和单个模型管理多个表单呢
以下是我在“routes”中的当前代码。php”

$routes->post('addnewuser', 'STD::adduser2');

下面是我的控制器代码

public function adduser2()
    {
        $userModel = new UserModel();
        $result = [
            'name' => $this->request->getVar('name'),
            'gen' => $this->request->getVar('gen'),
            'dob' => $this->request->getVar('dob'),
            'email'  => $this->request->getVar('email'),
            'pwd'  => md5($this->request->getVar('pwd')),
        ];
          
        $save=$userModel->insert($result);
     }

下面是我的模型文件代码

namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
    protected $table2 = 'users';
    protected $primaryKey2 = 'id';
    protected $allowedFields2 = ['email', 'password']; // first table 
    

    protected $table2 = 'additional_info';
    protected $primaryKey2 = 'id';
    protected $allowedFields2 = ['user_id', 'address', 'gender']; // second table (trying to insert data)
}
3phpmpom

3phpmpom1#

请阅读本文档以了解有关DRY编码的各种可用选项的详细信息。
使用占位符路由,如下所示。

$routes->post('users/(:any)', 'STD::manage_users')

在您的控制器中使用如下。

<?php

namespace App\Controllers;

class STD extends BaseController
{
    public function manage_users($form_name=false)
    {
        switch($form_name) 
        {
             case 'addUsers' :
                  $userModel = new UserModel();
                  $result = [
                    'name'  => $this->request->getVar('name'),
                    'gen'   => $this->request->getVar('gen'),
                    'dob'   => $this->request->getVar('dob'),
                    'email' => $this->request->getVar('email'),
                    'pwd'   => md5($this->request->getVar('pwd')),
                  ];
                  $save = $userModel->insert($result);
                  /* load success page here */
             break;
             
             case 'editUsers' :
                  /*... code to edit user ...*/
                  /* load success page here */
             break;
             
             case 'removeUsers' :
                  /*... code to remove user ...*/
                  /* load success page here */
             break;
             
             default :
                $this->response->setStatusCode(404, 'No action found with the name '.$form_name);
        }
    }
}

相关问题