0

私は現在、クライアント向けの CMS に取り組んでおり、Codeigniter を使用してその上に構築する予定です。これは簡単なプロジェクトにすぎないため、堅牢なソリューションを探しているわけではありません。

ページを作成するには、mysql テーブルのスラッグと一致するスラッグに基づいて、ページの詳細を保存し、正しいページをプルします。

私の質問は、しかし、これが機能するためには、このスラッグを URL からコントローラーに渡してからモデルに渡す必要があるということです。ルートのある URL からのコントローラ?

それで

/ページ/私たちの物語

になる

/私たちの物語

これは可能ですか

4

3 に答える 3

2

このようにすることをお勧めします。

あなたが持っているとしましょう:コントローラー「ページ」/メソッド「ショー」

$route['page/show/:any'] = "$1";

または method は推奨しない index です。ニュースのようなものがある場合は、次を追加します。

$route['news/show/:any'] = "news/$1";

それでおしまい。

于 2011-01-22T23:05:54.637 に答える
1

はい、確かに。私は最近、Codeigniter駆動のCMSを自分で構築しました。ルートの全体的な目的は、URLの外観と機能を変更することです。これは、コントローラー/関数/引数/引数のパラダイムから脱却するのに役立ち、URLをどのように表示するかを選択できます。

  1. コントローラディレクトリにページコントローラを作成します
  2. その中に_remap関数を配置して、コントローラーへのすべての要求をキャッチします
  3. Bitbucketの最新バージョンのCI2.0を使用している場合は、routes.phpファイルでこれをファイルの最後に置くことができます。$routes['404_override'] = "pages";そうすると、存在しないコントローラーへのすべての呼び出しがコントローラーとあなたに送信されます。次に、URLチャンクの存在を確認できます。また、ページをデフォルトのコントローラー値にする必要があります。

Codeigniter CMSで使用しているコードや作業コードなど、数か月前の同様の質問に対する私の回答を参照してください。

于 2011-01-24T04:41:42.603 に答える
0

これを実現するために最近のプロジェクトで使用したコードを次に示します。どこかから借りました。どこか思い出せない。

function _remap($method)
{
  $param_offset = 2;

  // Default to index
  if ( ! method_exists($this, $method))
  {
    // We need one more param
    $param_offset = 1;
    $method = 'index';
  }

  // Since all we get is $method, load up everything else in the URI
  $params = array_slice($this->uri->rsegment_array(), $param_offset);

  // Call the determined method with all params
  call_user_func_array(array($this, $method), $params);
}

次に、私のindex関数は、関数を配置する場所ですpage

于 2011-01-20T17:20:19.760 に答える