ここでは少しガイダンスが必要です。私はCodeigniter 3を使用しています。 セグメントルーティングではMVC fwなので、どのようにレコードのname
が表示されるカスタムルートを作成することができるかを知りたい(カテゴリ、製品、投稿など)データベースからid/name
の代わりにid segment
が必要です。データベースから返されるか、またはプレビューする必要があるレコードを特定するには、id
が必要です。Codeigniterを上書きする方法IDと名前の代わりにちょうど名前を表示するためのルート
コントローラ
class Categories extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('CategoryM');
}
public function index(){
$data = array(
'category_list' => $this->CategoryM->listAll()
);
$this->load->view('test/category_list', $data);
}
public function preview()
{
$categoryId = $this->uri->segment(2);
$data = array (
'previewByCategory' => $this->CategoryM->previewByCategory($categoryId)
);
$this->load->view('public/preview_by_category', $data);
}
モデル
<?php
class CategoryM extends CI_Model {
public function listAll() {
$query = $this->db
->select('*')
->from('categories')
->where('parentid', NULL, TRUE)
->order_by('name', 'asc')
->get();
if($query->num_rows() > 0) {
return $query->result();
}else{
return false;
}
public function previewByCategory($categoryId=''){
$query = $this->db
->select(/* posts and categories data */)
->from('categories')
->join('posts', 'posts.categoryID = categories.id', 'left')
->where('categories.id', $categoryId)
->get();
if($query->num_rows() > 0){
return $query->result();
}else{
return false;
}
}
}
ビュー
<?php if($category_list):?>
<?php foreach($category_list as $category):?>
<h3>
<a href="<?php echo base_url() . strtolower(url_title($category->name) . '/' . $category->id);?>">
<?php echo $category->name;?>
</a>
</h3>
<?php endforeach;?>
<?php endif;?>
マイルート
:私はいくつかのコード例を掲載します私が欲しい
// Category routes
$route['categories'] = 'categories/index';
$route['(:any)/(:num)'] = 'categories/preview/$1';
は、そのカテゴリのグループからすべての製品を一覧表示されますちょうど
www.mywebsite/categoryname
を表示する代わりに、ルート
www.mywebsite/categoryname/categoryid/
です。しかし、どのようにURLでIDなしでこれを行うには。私の質問が広すぎるとすみません。前もって感謝します。
もののみ –
どのように意味ユニークである場合は、この 'categoryname'を行うことができますか? IDなしのカテゴリ名の値に基づいてデータをフェッチするには? – Goran