基于CodeIgniter实现点击按钮跳转至另一页面的技术方案咨询
嘿,我来帮你搞定CodeIgniter里点击按钮跳转页面的问题~先看看你现有代码里的几个小问题,再给你几个实用的解决方案:
先说说你现有代码的小问题
- 视图里的表单
action是空的,提交后会默认指向当前页面,但你的Click方法专门处理注册按钮,这样逻辑会混乱 - 两个
submit按钮的逻辑没区分开:登录按钮点击后没有对应的处理分支 - 用
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
相关产品推荐
相关产品推荐

