You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于CodeIgniter实现点击按钮跳转至另一页面的技术方案咨询

嘿,我来帮你搞定CodeIgniter里点击按钮跳转页面的问题~先看看你现有代码里的几个小问题,再给你几个实用的解决方案:

先说说你现有代码的小问题

  1. 视图里的表单action是空的,提交后会默认指向当前页面,但你的Click方法专门处理注册按钮,这样逻辑会混乱
  2. 两个submit按钮的逻辑没区分开:登录按钮点击后没有对应的处理分支
  3. 用submit按钮做纯跳转有点浪费,submit更适合提交表单数据,纯跳转用锚点或普通按钮更合理

方案1:纯跳转用锚点标签(最推荐,简单直接)

如果只是点击「注册」按钮跳转到注册页面,不需要提交任何数据,直接用<a>标签模拟按钮样式就好,代码更简洁:

视图 login.php 修改:

<div class="input-group">
    <!-- 登录按钮保留submit,用来提交登录表单 -->
    <input type="submit" id="submit" class="form-control" value="Login" name="login">
    <!-- 注册按钮改成a标签,直接跳转 -->
    <a href="<?php echo base_url('login/register'); ?>" class="form-control" style="border: none; cursor: pointer;">Register</a>
</div>

控制器 login.php 修改:

class Login extends CI_Controller {
    public function index() {
        $this->load->view('login');
    }

    // 新增注册页面的方法
    public function register() {
        $this->load->view('register');
    }
}

注意:要先在application/config/config.php里配置好base_url,比如:

$config['base_url'] = 'http://localhost/你的CI项目名/';

方案2:表单提交后处理跳转(适合需要提交数据的场景)

如果需要先提交表单数据(比如登录验证)再跳转,那修正你的表单和控制器逻辑:

视图 login.php 修改:

<!-- 指定表单提交到控制器的handle_buttons方法 -->
<form action="<?php echo base_url('login/handle_buttons'); ?>" class="loginForm" method="POST">
    <div class="input-group">
        <!-- 两个按钮用同一个name,不同的value来区分操作 -->
        <input type="submit" class="form-control" value="Login" name="action">
        <input type="submit" class="form-control" value="Register" name="action">
    </div>
</form>

控制器 login.php 修改:

class Login extends CI_Controller {
    public function index() {
        $this->load->view('login');
    }

    public function handle_buttons() {
        $action = $this->input->post('action');
        
        if ($action === 'Register') {
            // 跳转到注册页面
            $this->load->view('register');
            // 如果要跳转到其他控制器,用redirect更规范:
            // redirect(base_url('home/index'));
        } elseif ($action === 'Login') {
            // 这里写登录验证逻辑,比如校验账号密码
            // 验证成功后跳转:
            // redirect(base_url('dashboard'));
            $this->load->view('dashboard'); // 示例加载登录后的页面
        }
    }
}

方案3:前端JS控制跳转(适合不需要后端参与的场景)

如果想直接在前端处理跳转,不用走后端方法,给普通按钮加点击事件即可:

视图 login.php 修改:

<div class="input-group">
    <input type="submit" id="submit" class="form-control" value="Login" name="login">
    <!-- 用普通按钮,加onclick事件跳转 -->
    <button type="button" class="form-control" onclick="window.location.href='<?php echo base_url('login/register'); ?>'">Register</button>
</div>

控制器还是和方案1一样,保留register方法加载注册视图就行。


内容的提问来源于stack exchange,提问作者Reynaldi Rey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:03:34