Поставлен в тупик контроллерами CodeIgniter, найден, но не найден - PullRequest
0 голосов
/ 06 января 2011

ОК, я признаю это.Я новичок в КИ.Я делаю что-то действительно не так, и я был в этом пару часов и не могу найти свою ошибку.

У меня есть контроллер с именем 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'); ?>

1 Ответ

1 голос
/ 06 января 2011
$route['engineering-resources/login'] = "resources/login";

Этот маршрут не направляется к engineering-resources/login/validate_credentials к resources/login/validate_credentials

У вас должно быть что-то вроде этого:

// not tested
$route['engineering-resources/login/(\S*)'] = "resources/login/$1";

Еще одна вещь: если вы используете маршруты, вы должны также использовать маршруты из ваших представлений ..

echo form_open('engineering-resources/login/validate_credentials');
...