Почему функции не работают в контроллере Codeigniter по умолчанию? - PullRequest
2 голосов
/ 02 марта 2012

У меня свежая установка codeigniter. Я просто пытаюсь использовать функцию в моем контроллере по умолчанию, как это:

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

class Welcome extends CI_Controller {

    public function index()
    {

        $data = array(
           'title' => 'Welcome',
           'description' => 'Welcome Page'
        );

        $this->load->view('layouts/header',$data);  
        $this->load->view('home/home');
        $this->load->view('layouts/footer',$data);
    }

    public function contact()
    {

        $data = array(
           'title' => 'Contact Us',
           'description' => 'Contact Page'
        );

        $this->load->view('layouts/header',$data);  
        $this->load->view('home/contact');
        $this->load->view('layouts/footer',$data);
    }
}

Я успешно удалил index.php, используя htaccess. Теперь, когда я иду на example.com/welcome/contact, он работает, но не на example.com/contact/.

.

Почему это не должно работать по умолчанию без использования маршрутов?

Ответы [ 3 ]

6 голосов
/ 02 марта 2012

используйте route внутри codeigniter, чтобы вы могли переписать новый uri для каждого из них

$route['contact'] = 'welcome/contact';

и не забудьте о файле htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
4 голосов
/ 02 марта 2012

«Контроллер по умолчанию» используется только при отсутствии сегментов URL. Он вызывает только один метод, а метод контроллера по умолчанию - index().

Как правило, первая часть вашего URL отображается на контроллер:

Это вызовет метод index контроллера contact:

http://example.com/contact

Это вызовет метод hello контроллера contact:

http://example.com/contact/hello

Это вызовет метод hello контроллера contact и передаст world в качестве первого аргумента:

http://example.com/contact/hello/world

Читать все об этом в руководстве пользователя: http://codeigniter.com/user_guide/general/urls.html

Для работы этого URL необходим контроллер contact, или вы можете использовать маршрутизацию .

0 голосов
/ 02 марта 2012

example.com/contact/ вызывает контроллер контактов, и у вас есть метод в контроллере приветствия (который является вашим контроллером по умолчанию, как объяснил @Madmartigan).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...