0

わかりました、認めます。私はCI初心者です。私は本当に基本的な間違ったことをしています.2時間ほど試してみましたが、エラーが見つかりません.

login というコントローラーがあります。controllers フォルダーの resources フォルダーにあります。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'); ?>
4

1 に答える 1

1
$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";

もう1つ、ルートを使用している場合は、ビューからもルートを使用する必要があります..

echo form_open('engineering-resources/login/validate_credentials');
于 2011-01-06T20:17:52.700 に答える