Проблема с текстом Codeigniter «Новости»

У меня проблема с URI. Я попытался просмотреть сообщение, но не смог увидеть ответ.

Учебное пособие можно найти здесь: http://codeigniter.com/user_guide/tutorial/news_section.html

В принципе, я реплицировал все, и все работает отлично, но там есть мнение, где я не знаю, является ли мой браузер, или я что-то упустил.

В «views / news / index.php» у меня есть следующий код в соответствии с учебником:

<h2><? echo $news_item['title'] ?></h2> <div id="main"> <? echo $news_item['text']?> </div> <p>[b]<a href="news/<? echo $news_item['slug']?>">View Article</a>[/b]</p> 

Теперь проблема в том, что когда я смотрю в исходный html в своем браузере, я вижу ссылку как:

Просмотр статей

Я считаю, что это правильно. Но когда я нажимаю, он указывает мне:

локальный / CI / index.php / Новости / Новости / Firstnews

Как видите, «новость» повторяется дважды в URI. Похоже, браузер просто добавляет значение href в открытый URI, вместо того, чтобы очищать его до index.php и добавлять туда.

Я попытался удалить бит «news» из значения href, и он отлично работает.

Я использую Chome, если это имеет значение.

Это мое недоразумение? Или это просто ошибка в учебнике?

Игорь, я думаю, это ошибка учебника, и вам нужно добавить / в атрибут href. Например

 <a href="/news/<? echo $news_item['slug']?>">View Article</a> 

Кроме того, вы должны использовать URL Helper – http://codeigniter.com/user_guide/helpers/url_helper.html

Ps есть шанс, что вы не настроите файл .htaccess.

Чтобы избежать подобных ошибок, я часто использую base_url() при записи ссылок. Как это:

 <?php echo anchor(base_url('news/'.$news_item['slug']),View article); ?> 

Обратите внимание, что я использую функции anchor() и base_url() хелпера URL . Дополнительная информация:

http://codeigniter.com/user_guide/helpers/url_helper.html

Это ошибка в учебнике CI.


Прежде всего рекомендуется использовать site_url() чтобы помочь сгенерировать URL-адрес новостного пула.

Вы делаете это, добавляя $this->load->helper('url'); к __construct() вашего контроллера новостей в контроллерах / news.php

Затем измените URL ссылки в своих представлениях / news / index.php на <?php echo site_url('news/' . $news_item['slug']); ?> <?php echo site_url('news/' . $news_item['slug']); ?>


Самая важная ошибка заключается в том, что во всех ваших текущих файлах вы заполняете $data['news'] а остальные ваши функции смотрят на $data['news_item']

Вы должны изменить эти (две) переменные в views / news / view.php и (три) переменных в функции view() в контроллере / news.php

После перезагрузки страницы это должно сделать! Для полной дискуссии на форумах CI проверьте следующую ссылку: http://ellislab.com/forums/viewthread/209349/

Для меня я изменил

  $data['news'] = $this->news_model->get_news($slug); 

чтобы:

  $data['news_item'] = $this->news_model->get_news($slug); 

и это прекрасно работает, сейчас

BTW, я нашел этот git repo github.com/Crias/tutorial-codeigniter-news, который содержит исходный код для учебника по умолчанию.

Теперь вам не нужно набирать (или копировать-вставлять) его снова, чтобы учебник работал.