问题/简要介绍
我目前是在制作的过程中是一个简单的注册/登录系统(这显然会扩展到更多的后来)。我有一个名为Users
控制器,其特点主要有两个功能。一个是show_register()
,一个是send_register()
。这是一个模型User_Model
,所谓的工厂UserFactory
和当前配对(主要用于测试,这些都将稍后重新组合)三个视图register_success
,register_fail
和show_register
。他们是这么说:“嘿,恭喜,你成功地注册”,一个说基本上一个视图“哦不一,没有注册!”和一个用于显示实际登记表。
在标题上http://url.com/register,将自动所示的登记表本身(通过与$route['register'] = 'users/show_register';
路由完成)。
所以,一旦你在show_register
填写表格,表单动作导致了send_register
控制器的Users
功能。输入被检查,如果一切是有效的,它被送到UsersFactory
数据库输入。如果一切正常,则控制器接收到“真”返回结果,并且显示了对应的图。这就是我们的问题在踢!
如果我管理登记,我的网址是现在:http://url.com/public/users/send_register。公共文件夹是我保存文件,我已经意识到,需要从通过htaccess的网址,我会发现我对如何做的方式去除。问题是,我不希望被包括用户控制器和该send_register功能的我的网址。我希望它继续作为http://url.com/register/,但表现出不同的看法。
我已经试过/看着
我看着路由首先的。我知道(希望我是对这个,否则我需要学习如何阅读),它不会为我所描述的问题开展工作。造成这种情况的主要原因是因为它需要什么我指定并发送到特定的类/函数。在这种情况下,我们正在做的是已经将正确的类/函数,但“错误”的URL显示给用户。这也是困难的,因为我有这个控制器内部不同的方法,这意味着我不能静态映射的所有行动将导致一个单一的功能。
我也看着的.htaccess,但我还没有找到一种方法来实际写。良好的措施,我会在这里印在底部的情况下,它会帮助我的.htaccess文件。所有我所做的就是修改,以便在index.php文件从URL中移除。
.htaccess文件
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
如果有任何其他文件,你想我证明,我会很乐意这样做。现在,所有我能想到的,可能是相关的是控制器本身。
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Controller {
public function show_register()
{
$this->load->view("show_register");
}
public function send_register()
{
// Populate the model with the information we got from the form.
$data = array(
'user_name' => $this->input->post('username'),
'user_pass' => $this->input->post('password'),
'user_email' => $this->input->post('email'),
'user_level' => 1
);
// Then pass that on to the User Factory, which will insert that into the database.
$this->load->library("UserFactory");
if($this->userfactory->registerUser($data))
{
$this->load->view("register_success");
}
else
{
$this->load->view("register_fail");
}
}
}
?>
道歉需要这么长的时间给予答复!
为什么不只是做一个Ajax调用?
在您的视图,其中形式为:
<div id="message_box" class="hidden"></div>
<form id="theForm" method="post" action="submitForm()"></form>
<script>
function submitForm() {
$.post("<?= site_url('Users/send_register');?>", $("#theForm").serialize(), function(data) {
success: $("#message_box").html(data).show();
error: $("#message_box").html("<p>There was an error with your request</p>").show();
});
}
</script>
当然也有一百万个不同的方式来做到这一点。但我假设这些观点都只是消息的看法,在短短简短的HTML成功/失败(如你如上所述)。 AJAX的好处是,用户会留在页面上,并且你会隐藏自己的网址。
希望帮助!