Проблема с функцией контроллера кода - PullRequest
0 голосов
/ 22 марта 2012

Я новичок в программировании Codeigniter. Я запустил CI, просто изменив приветствие моего контроллера по умолчанию. Я добавил в контроллер функцию, которая вызывается при нажатии кнопки подтверждения. Я не сделал никаких изменений в рамках по умолчанию или в файлах конфигурации. Но после нажатия кнопки «Отправить» приложение возвращает ответ 404. не найден Запрошенный URL / login / welcome / main не был найден на этом сервере. Сервер Apache / 2.2.14 (Ubuntu) на локальном хосте Порт 80

Основная функция - это то, что я написал в приветственном контроллере. Может кто-нибудь, пожалуйста, скажите мне, что не так. Моя версия Codeigniter - 2.1.0. Я переустановил Apache и PHP. Но бесполезно все же. Код от контроллера и страница приветствия ниже.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
error_reporting(E_ALL);

class Welcome extends CI_Controller {

    /**
     * Index Page for this controller.
     *
     * Maps to the following URL
     *      http://example.com/index.php/welcome
     *  - or -  
     *      http://example.com/index.php/welcome/index
     *  - or -
     * Since this controller is set as the default controller in 
     * config/routes.php, it's displayed at http://example.com/
     *
     * So any other public methods not prefixed with an underscore will
     * map to /index.php/welcome/<method_name>
     * @see http://codeigniter.com/user_guide/general/urls.html
     */
    public function index()
    {
        $this->load->view('login_page');
        //$this->load->view('phpinfo');
    }

    public function main()
    {

    $this->load->view('phpinfo');

    }

И страница приветствия

<div id="container">
<h1>Ignitor</h1>

<div id="body">

    <code>Please Login to continue. </code>


    <div id="login_form">
    <?php echo form_open(base_url().'welcome/main');?>
    <ul>
    <li>
    <label>Username </label>
    <?php echo form_input(array('id' => 'username', 'name' => 'Username'));?>
    </li>


    <li>
    <label>Password </label>
    <?php echo form_password(array('id' => 'password', 'name' => 'Password'));?>
    </li>


    <li> <?php echo form_submit(array('id'=>'submit'),'Let me in' )?></li>
    </ul>

    <?php echo form_close();?>

    */ 

Ответы [ 4 ]

1 голос
/ 22 марта 2012

Чувак ..

class Welcome extends CI_Controller {

    public function index()
    {
        // echo 'Index';
        $this->load->view('welcome');
        // Then save the file in your application/views/welcome.php
        // http://yours.com/index.php/welcome
        // Or http://yours.com/welcome <-- With htaccess
    }

    public function main()
    {
        // echo 'Index';
        $this->load->view('main');
        // Then save the file in your application/views/main.php
        // http://yours.com/index.php/welcome/main
        // Or http://yours.com/welcome/main <-- With htaccess
    }
}

По умолчанию файл index.php будет включен в ваш URL

Вы можете легко удалить этот файл, используя файл .htaccess с некоторыми простыми правилами. Вот пример такого файла, использующего «отрицательный» метод, в котором все перенаправляется, кроме указанных элементов:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
1 голос
/ 22 марта 2012

Вы пропускаете index.php в URL-адресе, что означает, что вы ожидаете, что файл .htaccess направит запрос в главный index.php CodeIgniters.

Используйте URL-адрес /login/index.php/welcome/ main, чтобы проверить, если ваш файл .htaccess неисправен или отсутствует.Если вы переименовали или переместили каталог, в котором он находится, в 'login', вы, возможно, забыли обновить его.

Ваш .htaccess в каталоге 'login' должен выглядеть примерно так -

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /login/index.php/$1 [L]

Если бы он находил основной index.php и ошибка была связана с проблемой именования вида / модели / контроллера, вы бы получили 404 от CodeIgniter, а не от Apache.

1 голос
/ 22 марта 2012

Вы установили .htaccess файл ?Это должно быть что-то вроде:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
0 голосов
/ 22 марта 2012

Правильно ли вы назвали файл для просмотра страницы приветствия? Другими словами, ваш контроллер запрашивает, чтобы login_page_view.php (или, по крайней мере, я считаю, что это соглашение о именах файлов по умолчанию) находится в папке views на основе строки кода:

$this->load->view('login_page');
...