Как создать URL & amp; Читать на Codeigniter?

Как создать динамический URL в Codeigniter?.

Я следую Таблица который хранит основные детали статьи:

 1. ID
2. Article Title
3. Content
4. Tags
5. Status
6. Create Time
7. Update Time
8. Author ID
9. Status

Теперь я хочу знать, как создать динамический URL, который содержит Page ID & Article Title,

Например http://www.domain.com/1/hello-codeigniter

Теперь над примером URL, я создаю URL с ID & Article Title,

  1. Идентификатор для получения содержимого статьи (когда пользователь нажимает на статью, получить содержимое из идентификатора).
  2. Название статьи для безопасного URL.

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

ЗДЕСЬ МОЙ КОД:

Посмотреть: home_page.php

<div id="body">
<?php for($i=0; $i<count($blogPosts); $i++): ?>
<div class="post-preview">
<?php
$postID = $blogPosts[$i]->id; // Get post ID
$postTitle = $blogPosts[$i]->title; // Get post Title
$urlTitle = preg_replace('/\s+/', '-', $postTitle); // Replacing space with dash
echo anchor('content/'.$postID.'/'.$urlTitle, $postTitle, array('title' => $postTitle)); // Get post URL
echo "<br />";
?>
</div>
<hr>
<?php endfor; ?>
</div>

контроллер: home.php

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

class Home extends CI_Controller {

public function index() {

$this->load->model("HomeModel"); // Load HomeModel
$data['blogPosts'] = $this->HomeModel->blogPosts(); // Get blog posts data from blogPostsData function
$this->load->view("home_page", $data);

}

}

Модель: HomeModel.php

class HomeModel extends CI_Model {

public function blogPosts() {

$this->db->select('*');
$this->db->from('blog_posts');
$query = $this->db->get();
return $query->result();

}

}

После написания кода При наведении на ссылку я получаю этот URL:

http://localhost/codeIgniter/index.php/content/1/My-First-Blog-Post!

Как спрятаться index.php, content & 1 с URL.

Еще одна вещь, что когда я нажал на ссылку, я получаю это сообщение об ошибке:

An Error Was Encountered
The URI you submitted has disallowed characters.

Любая помощь будет оценена !!!

3

Решение

Ты можешь использовать routes для этой цели

Удалять index.php использование .htaccess со следующим кодом

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

И в config.php

$config['uri_protocol'] = 'AUTO';

Чтобы удалить контент из URL, удалите контент из якоря ввиду

echo anchor($postID.'/'.$urlTitle, $postTitle, array('title' => $postTitle)); // Get post URL

Я не думаю, что вы должны удалить 1 с URL Если вы удалите его из URL, то как вы можете определить свой пост. Так что будет хорошо держать его в URL. Или, если вы хотите удалить, добавьте этот идентификатор в конце заголовка сообщения, как

http://localhost/codeIgniter/My-First-Blog-Post!-1

и взорвать последний элемент для id сообщения

An Error Was Encountered
The URI you submitted has disallowed characters.

Вы получаете эту ошибку, потому что в своем URL вы добавили !, Чтобы сделать ваше приложение безопасным, CI предотвращает использование специальных символов в URL. Поэтому было бы лучше не использовать специальные символы в URL, кроме _ а также -,

На вашем контроллере

class Content extends CI_Controller {
function index($id, $name)
{
echo $name;// this contain book name
echo $id;// this contain book id

//your code
}
}

теперь в ваших маршрутах application/config/routes.php

$route['(:num)/(:any)']='content/index/$1/$2';
0

Другие решения

Если вы храните слаг (заголовок статьи для безопасного URL) в базе данных, вам вообще не нужно показывать идентификатор. Это будет включать добавление столбца в вашу таблицу.

Вы можете автоматизировать генерацию пули при создании статьи, используя url_title() как подробно Вот.

0

<a href="<?php echo base_url()?>index.php/controller_name/method_name/<?php echo $item['name'] ?>/<?php echo $item['id'] ?>" alt="">click here to view</a>

Ваш URL выглядит так www.example.com/index.php/controller_name/method/book_name/book id

В контроллере

function method_name($name, $id)
{
echo $name;// this contain book name
echo $id;// this contain book id

//Simply you can use this to get all data
$result = $this->Model_name->get_book_details($id);//in model $id hold the id of book
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector