Использование слагов в codeigniter - PullRequest
12 голосов
/ 22 июля 2010

Я слышал о людях, использующих слизняков для создания чистых URL. Я понятия не имею, как это работает. В настоящее время у меня есть сайт codeigniter, который генерирует URL, как это

www.site.com/index.php/blog/view/7

Из того, что я понимаю, поддерживая поле слизня, можно получить URL-адреса, подобные

www.site.com/index.php/blog/view/once-upon-a-time

Как это сделать? Особенно по отношению к codeigniter?

Ответы [ 4 ]

50 голосов
/ 22 июля 2010

Я просто храню слагов в своей таблице базы данных в столбце с именем slug, затем нахожу сообщение со слагом, например:

public function view($slug)
{
    $query = $this->db->get_where('posts', array('slug' => $slug), 1);

    // Fetch the post row, display the post view, etc...
}

Кроме того, чтобы легко получить слаг из вашегозаголовок сообщения, просто используйте url_title() помощника по URL:

// Use dashes to separate words;
// third param is true to change all letters to lowercase
$slug = url_title($title, 'dash', true);

Небольшой бонус: вы можете захотеть применить ограничение уникального ключа к столбцу slug, которое обеспечиваетчто в каждом сообщении есть уникальный слаг, так что не следует однозначно, какой пост должен искать CodeIgniter.Конечно, вам, вероятно, следует в первую очередь присваивать своим сообщениям уникальные заголовки, но если поставить это на место , то соблюдение правила и предотвращение провала вашего приложения.

3 голосов
/ 14 декабря 2013

Вы можете использовать библиотеку CI Slug от Эрика Барнса:

https://github.com/ericbarnes/CodeIgniter-Slug-Library

0 голосов
/ 04 апреля 2018

Создание страницы слаг в кодеигнитере

создать помощника с именем slug_helper.php

<?php

if (!function_exists('create_slug')) {
function create_slug($string)
{
    $slug = trim($string);
    $slug = strtolower($slug);
    $slug = str_replace(' ', '-', $slug);

    return $slug;
} } ?>


autoload
$autoload['helper'] = array('slug');

 Controller
 $data = array(
            'title' => $this->input->post('title'),
            'content' =>$this->input->post('content'),
            'slug' => create_slug($this->input->post('title'))
        ); 

 $insert_page = $this->Admin_model->insert_page($data);
0 голосов
/ 29 сентября 2017

Моим друзьям из ES удалите акцентированные символы, используя это из Text Helper:

    $string = 'áéíóú ÁÉÍÓÚ';    
    $slug = url_title(convert_accented_characters($string), 'dash', true));
    echo $slug; //aeiou-AEIOU
...