好的,我承认。我是CI新手。我正在做一些非常基本的错误,我已经在这里工作了几个小时,并且找不到我的错误。找到CodeIgniter控制器,但找不到
我有一个名为login的控制器。它位于我的控制器文件夹的资源文件夹中。它加载一个名为login_form的视图。但是对于我来说,如果转到domain.com/resources/login或domain.com/resources/index,它将无法加载。但我可以通过一条路线到达它:
$route['engineering-resources/login'] = "resources/login";
即使当我这样做时,我的表单操作仍未找到。这是我的形式:
<?php
echo form_open('resources/login/validate_credentials'); //folder/controller/method. I think this is where my problem is
echo form_input('username', 'Username');
echo form_password('password', 'Password');
echo form_submit('submit', 'Login');
echo anchor('login/signup', 'Create Account');
echo form_close();
?>
的路径是在我的控制器夹我的资源文件夹中,并且所述控制器是利用validate_credentials方法登录控制器。这里是我的登录控制器的相关部分:
class Login extends Controller {
function index()
{
$data['title'] = 'Engineering Resources | Login';
$data['main_content'] = 'resources/login_form';
$this->load->view('templates/main.php', $data);
}
function validate_credentials()
{
$this->load->model('login/membership_model');
$query = $this->membership_model->validate();
if($query) // if the user's credentials validated...
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('resources/members_area');
}
else // incorrect username or password
{
$this->index();
}
}
的指数函数的工作时,我使用的路线,而不是当我使用上面的domain.com路径。我假设这就是为什么它找不到validate_credentials方法。我究竟做错了什么?
这里是main.php
<?php $this->load->view('includes/header.php'); ?>
<?php $this->load->view('includes/nav.php'); ?>
<?php $this->load->view($main_content); ?>
<?php $this->load->view('includes/footer.php'); ?>
首先,加载主视图时删除'.php'。另外你在主视图中做什么?似乎你正在发送登录表单视图的“路径”!您的控制器文件夹内的文件夹结构是什么?你也不是验证用户输入?!或者你在模型中? – ifaour 2011-01-06 20:10:15
我将删除.php。我发布了上面的主视图。这是一种模板化的方法,它告诉模板将登录表单加载到模板中。文件夹结构:控制器/资源。其他类似的路径工作正常。也许是表单路径的问题。 – sehummel 2011-01-06 20:15:44