Навигация в CodeIgniter

Как работает навигация в Codeigniter?

У меня очень простой случай использования

У меня есть ссылка, по которой я должен перейти на новую страницу.

<a href ="<?php echo site_url("/blog/create"); ?>">Create Post</a>

На моей странице контроллера (blog.php) я определил функцию с именем create. Она будет содержать логику для отображения страницы createpost.

public function create()
    {   
    }

Я настроил маршрут на странице Routes.php, как это

$route['create'] = "blog/create/";

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

Примечание: я сделал необходимые изменения в файле.htaccess, чтобы удалить файл index.php

3 ответа

  1. Проверь свой .htaccess файл для любой ошибки. Правило переписывания из руководства делает работу:

    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]    
    
  2. в вашем конфигурационном файле удалите index.php в этой строке:

    $config['index_page'] = '';
    
  3. убедитесь, что ваш контроллер имеет правильный синтаксис, такой как:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class Blog extends CI_Controller {
    
      public function create(){
        echo 'hello';
      }
    
    }
    

Теперь либо нажав на вашу ссылку или набрав URL localhost/blog/create а также localhost/index.php/blog/create покажет все, что вы выводите с помощью функции контроллера create(),

Вы также можете упростить и просто использовать:

anchor('controller/method');

Нет необходимости форсировать URL сайта и т. Д. CI может сделать это самостоятельно.

На самом деле вам не нужно трогать маршруты, если ваш контроллер / метод не отличается от того, который вы хотите предоставить для маршрутизации.

Ваш контроллер должен быть примерно таким:

<?php
class Blog extends CI_Controller{

    public function create()
    {
        echo 'you have arrived on blog/create page';
    }

}

Теперь, чтобы получить доступ к своей странице, вы можете перейти на свой URL, который должен быть либо

  • website.dev/blog/create
  • website.dev/index.php/blog/create
Другие вопросы по тегам