Навигация в 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 ответа
Проверь свой
.htaccess
файл для любой ошибки. Правило переписывания из руководства делает работу:RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
в вашем конфигурационном файле удалите
index.php
в этой строке:$config['index_page'] = '';
убедитесь, что ваш контроллер имеет правильный синтаксис, такой как:
<?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