Codeigniter, как получить исходную строку из url_title ()? - PullRequest
0 голосов
/ 08 октября 2011

Я пытаюсь узнать, как использовать кодовый воспламенитель, но столкнулся с небольшой проблемой.Как и у большинства людей, когда они впервые используют фреймворк, я тоже веду блог.Я пытаюсь сделать мои ссылки для просмотра похожими на: http://localhost/blog/view/my-blog-post-title, и я дошел до этого.Но когда я добираюсь до фактического метода представления, я сталкиваюсь с проблемами.В основном я my-blog-post-title ссылается на первую запись сообщений в моей базе данных.Но фактическое название выглядит так: Мой блог, Заголовок сообщения .

Так как же получить идентификатор из my-blog-post-title, когда оригинал равен Мой блог, сообщениеЗаголовок чтобы я мог вытащить этот пост из базы данных?Или я должен просто использовать числа (я не хочу; _;).

Ответы [ 3 ]

3 голосов
/ 08 октября 2011

Что ж, я думаю, что лучшим решением и более простым подходом было бы создание столбца в вашей таблице публикаций, который называется «slug», который содержит вывод url_title () (в момент создания статьи вы сохраняете это значение).в этом столбце БД, а также в другой информации), и вместо этого используйте этот более сложный метод.

Итак, вы берете последний сегмент URL, либо через $ this-> uri->сегмент (3) или просто передавая весь URI методу ваших контроллеров, и запросите к этому столбцу:

class Blog extends CI_Controller {

  public function view($slug)
  {
    $this->load->model('blog_model');
    $data['posts'] = $this->blog_model->search_slug($slug);
    $this->load->view('myview',$data);
  }
}

Модель:

function search_slug($slug)
{
  $this->db->select('id,title')
           ->from('posts')
           ->where('slug',$slug);
  $query = $this->db->get();
  return $query->row();
}

Просмотр 'myview.php':

echo $posts->id;
echo $posts->title;
0 голосов
/ 08 октября 2011

Этот код может помочь вам извлечь заголовок:

$url_string = "view/my-blog-post-title";

function getOriginal($url_string) {
    $url_parts = explode("/",$url_string);
    $url_title = $url_parts[1];
    $title_parts = array_map("ucfirst",
           explode("-",$url_title));
    return implode(" ",$title_parts);
}

echo getOriginal($url_string);

, который выдаст:

Заголовок моего блога

Сложная часть, где вставить запятую (,).Это сложно, потому что заголовки блога могут содержать больше слов, таких как my-blog-post-title-some-other-words или my-blog-title-word-word-word.Запятая может идти куда угодно.

Если всегда ставится запятая после того, как после «Моего блога» вставляется запятая («Мой блог постоянен»), вы просто делаете str_replace после вызова getOriginai (..);

echo str_replace("My Blog","My Blog,","My Blog Post Title");
0 голосов
/ 08 октября 2011

Вы должны иметь возможность использовать что-то вроде

$parts = explode("/",$_SERVER['REQUEST_URI']);
$title=$parts[(count($parts)-1)];

, чтобы превратить ваш URL-адрес в массив, а затем взять заголовок из последнего раздела.string замените "-" на "", а затем выполните% like & поиск в вашей БД для заголовка.Не уверен, что это лучший подход, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...