22

システムのフロントエンドとバックエンドを分離したいので。フロントエンドとバックエンドとしてコントローラー内に2つのフォルダーを作成しました

以下は私のコントローラーフォルダーの構造です

controller
 --frontend
   ---store.php
   ---processing.php
   ---profile.php
   ---authenticate.php
   ---register.php 

 --backend
   ---authenticate.php
   ---stats.php
   ---users.php
   ---property_manage.php
   ---register.php 

を使用して機能にアクセスできます

frontend/store/add
frontend/store/manage
......

backend/stats/sales
backend/stats/payments
.....

しかし、URLからフロントエンドとバックエンドのセグメントを削除したいと思います。

codeigniterでルーティング機能を確認しましたが、私の知識によれば、各ルートを個別に指定する必要があります。私には約12個のコントローラーがあり、それぞれに約10〜15個の関数があるので、ルートへのすべての関数を指定する必要があるかもしれません。

ルーティングまたは他の方法を使用して達成する他の効率的な方法はありますか?(htaccessを使用せずに)

4

3 に答える 3

26

これを行う:

$route['store/(:any)'] = 'frontend/store/$1';
$route['processing/(:any)'] = 'frontend/processing/$1';
$route['profile/(:any)'] = 'frontend/profile/$1';

バックエンドも同じ:

$route['backend/(:any)'] = 'backend/authenticate/$1';

コントローラーのすべての関数に対して、routes.php に各ルールを作成する必要はありません。上記のように、コントローラーごとに 1 つのルールで十分です。

URI ルーティング : CodeIgniter ユーザーガイド

$1最初の式を表します。ここ(:any)に式があります。各ルールに複数の式を含めることができ、式は として表され$1ます$2。反対側でも同様です。

同様に、(:num)は数字のみを含むセグメント(:any)に一致し、任意の文字を含むセグメントに一致し、(\d+)任意の数字に([a-z]+)一致し、任意の英字テキストに一致します。

于 2012-12-19T15:15:35.547 に答える
2

フロントエンドの場合、これを routes.php に追加できます:

$this->set_directory( "frontend" );

そのため、ブラウザの URL に「フロントエンド」を含める必要はありません。

于 2016-01-25T07:43:54.150 に答える
1

何らかの形でフロントエンドとバックエンドを区別できる必要があります。おそらく、「admin」を含むURIをバックエンドに転送し、「admin」を含まないURIをフロントエンドに転送するルートを設定します。

于 2012-12-19T15:16:34.110 に答える