Codeigniter 如何使用 form_open 辅助函数设置表单操作 url

5 html php codeigniter twitter-bootstrap

我正在使用 Codeigniter 和 Bootstrap。这是我的视图代码:

<?php echo form_open('con_login/loginUser'); ?>
    <div class="bs-example">
        <div class="col-md-2">
            <label class="sr-only" for="username">Username</label>
            <input type="text" class="form-control" name="username" placeholder="Username" value="">
        </div>
        <div class="col-md-2">
            <label class="sr-only" for="password">Password</label>
            <input type="password" class="form-control" name="password" placeholder="Password" value="">
        </div>
        <button type="submit" class="btn btn-default" name="login" value="login">Sign in</button>
    </div>
    <?php echo form_close(); ?> 
Run Code Online (Sandbox Code Playgroud)

控制器中被调用函数的代码是:

public function loginUser() {
    $username = $this->mod_login->getUsername();

    $inUser = $this->input->post('username');
    $inPass = $this->input->post('password');

    if (in_array($inUser, $username)) {
        $password = $this->mod_login->getPassword($inUser);
        if ($password === $inPass) {
            $this->load->view('Alt_home');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

在此服务器上找不到请求的 URL /SEP/con_login/loginUser。

为什么是这样?和路由有什么关系吗?

Nav*_*ngh 2

您需要将完整的 url 传递给 form_open 函数,如下所示

<form action='http://localhost/folder/controller/method'>
Run Code Online (Sandbox Code Playgroud)

有两种方法可以做到这一点

1:使用base_url()

步骤1:打开application\config文件夹下的config.php文件

步骤 2:将 的值设置$config['base_url'] 为您的网站路径

  $config['base_url'] = "http://localhost/foldername/index.php";
Run Code Online (Sandbox Code Playgroud)

如何使用

在控制器中加载 url 助手

 $this->load->helper('url);
Run Code Online (Sandbox Code Playgroud)

现在在视图文件中您可以像这样使用

  echo form_open(base_url()."/controllername/mehod");
Run Code Online (Sandbox Code Playgroud)

2:手动

   form_open("http://localhost/foldername/index.php/controller/method");
Run Code Online (Sandbox Code Playgroud)