1

プロジェクトのモジュールとして codeigniter を使用して、情報をカテゴリとその項目として表示しています。

次のようなURLが欲しい

  1. sitename.com/module/ は、すべてのアイテムをランダムな順序で表示します。
  2. sitename.com/moduel/categoryname/ は、その特定のカテゴリのすべてのアイテムを表示します
  3. sitename.com/module/categoryname/title-of-the-item/ これにより、その特定のアイテムの詳細が表示されます

ここで sitename.com/module/ は codeigniter のルートであり、デフォルトのコントローラーはホームです。

私の質問は、1 つのセグメントまたは uri と uri の 2 つのセグメントのルートを設定する方法です。

  1. sitename.com/module/ はデフォルトのコントローラー (私の場合はホーム) をロードする必要があります
  2. sitename.com/module/categoryname/ は home/category/categoryname を読み込む必要があります
  3. sitename.com/module/categoryname/title-of-the-item は index/title/title-of-the-item をロードする必要があります

私は自分の関数を次のように定義します

  1. 関数 index() ...
  2. 関数カテゴリ($categoryname) ....
  3. 関数のタイトル($title)...

したがって、セグメントの数に応じてルートを作成するか、ルーティングでこれを達成するための他の代替手段がある場合は、それで問題ありません。

2 つのセグメントを引数として Index 関数に渡すのではなく、ルーティングを使用して実行したいと考えています。

それで、 ?

4

2 に答える 2

6
$route['page/(:any)'] = "home/page/$1";
$route['page'] = "home/index";
$route['(:any)/page/(:any)'] = "home/category/$1/page/$2";
$route['(:any)/page'] = "home/category/$1";
$route['page'] = "home/index";

$route['(:any)/(:any)'] = "home/title/$2";
$route['(:any)'] = "home/category/$1";

最後の2行(7と8)は私が必要としていたものです...そしてそれは私の目的を果たしました

最後の2行(1,2,3,4,5)の前の行は、最後の2行(7と8)にページ付けを使用する方法です。

ホーム/カテゴリとホーム/のみにページ付けがあり、終了ページであるホーム/タイトルはありません。

その間、誰かがコードにバグがあるか、完璧が必要であるとわかった場合は、更新できるように回答を追加してください。

于 2013-01-04T14:08:39.783 に答える
6

サイトのベース URL をsitename.com/moduleに設定します。

データベース主導のルーティングを試すことができます。
これは、データベース テーブルを使用してルートを書き込むことで機能します。

データベース テーブルの例。

CREATE TABLE IF NOT EXISTS `app_routes` (
  `id` bigint(20) NOT NULL auto_increment,
  `category` varchar(192) collate utf8_unicode_ci NOT NULL,
  `controller` varchar(64) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `category` (`category`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

ルート例;

$route[ 'default_controller' ]  = 'home';
$route[ '404_override' ]        = 'error404';

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get( 'app_routes' );
$result = $query->result();
foreach( $result as $row )
{
    $route[ $row->slug ]                 = 'home/category_lookup/'.$row->slug;
    $route[ $row->slug.'/:any' ]         = 'home/item_lookup/'$row->slug/$1;
    $route[ $row->controller ]           = 'error404';
    $route[ $row->controller.'/:any' ]   = 'error404';
}

このリンクで詳細を確認できます (これは私の仕事ではありません。Google は私の友達です)。

于 2013-01-04T13:58:30.027 に答える