2016-02-19 2 views
0

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

Контроллер ловя страницы-слизняка и управляет остальное Хотя все работает отлично, мне было интересно, будут ли лучшие варианты. Я видел некоторые решения с хранением пули в БД, и поймать их в маршрутах. Но я не считаю, что это необходимо?

// удивительный
// продукт/удивительный
// продукт/категория/удивительный


//controller site/site/page 
public function page($slug1 = NULL,$slug2 = NULL,$slug3 = NULL) 
{ 

    if($slug2!=NULL&&$slug3!=NULL){ 
     $slug = $slug3; 
    }else if($slug2!=NULL&&$slug3==NULL){ 
     $slug = $slug2; 
    }else{ 
     $slug = $slug1; 
    } 
    // find slug and display content 
} 

// routes.php 
// one level 
$route['(:any)'] = 'site/site/page/$1'; 
// two levels deep 
$route['(:any)/(:any)'] = 'site/site/page/$1/$2'; 
// max of three levels deep 
$route['(:any)/(:any)/(:any)'] = 'site/site/page/$1/$2/$3'; 
+0

У кого-нибудь есть комментарий или совет по этому подходу? –

ответ

0

Вы можете абстрактные вариации с использованием различных методов. Как вместо того, чтобы иметь, если тогда еще, вы можете иметь 3 разных метода, производящих разные слизни, как вам нравится.

public function LoadPage($page) 
{ 
} 

public function LoadProduct($product, $page) 
{ 
} 

public function LoadBlog($blog, $product, $page) 
{ 
} 



// Your routes could refer to individuals then 

// routes.php 
// one level 
$route['(:any)'] = 'site/site/LoadPage/$1'; 
// two levels deep 
$route['(:any)/(:any)'] = 'site/site/LoadProduct/$1/$2'; 
// max of three levels deep 
$route['(:any)/(:any)/(:any)'] = 'site/site/LoadBlog/$1/$2/$3'; 
Смежные вопросы