0

私はコードイグナイターの学習を見つめています (私はバージョン 3.0.0 を使用しています) が、パラメーターを使用してルーティングしようとすると問題が発生します

ファイル routes.php には次のものがあります。

$route['admin/orders'] = 'admin_orders/index';
$route['admin/orders/(:any)'] = 'admin_orders/index';
$route['admin/orders/getAll'] = 'admin_orders/getAll';
$route['admin/orders/getLast'] = 'admin_orders/getLast';
$route['admin/orders/delete/(:any)'] = 'admin_orders/delete'

;

admin_orders.php には次のものがあります。

 public function delete(){
        $id = $this->uri->segment(4);
         echo "ok   $id";
   }

そしてビューで:

<a href="'.site_url("admin").'/orders/delete/3'.'" class="btn btn-info">Delete</a>

しかし、アプリの削除を押すとページがリロードされ、/(:any) なしで試してみると、関数が読み込まれてメッセージが表示され、他のルートが機能しています

確かに私は何か間違ったことをしています.codeigniter 3を使用してパラメータを使用して1つの関数をロードするにはどうすればよいですか?

4

1 に答える 1

0

:anyこれは残りの前に一致する可能性が高いため、使用する順序は間違っています。安全のために、より一般的なものを最後にリストする必要がない場合でも、ルーターがルールを処理するときに、一致すると OK と表示されたときに停止し、より一般的または一般的なルールが最初にある場合は到達しないためです。特定の。ベスト プラクティスのルールと同様に、より具体的なものを最初に、より一般的なものを最後にリストする必要があります。これが、標準の条件付きロジックで if と ifelse の後に else が来る理由です (これは明らかです) が、このような場合、そのような単純なルールを見落としがちです..

https://ellislab.com/codeigniter/user-guide/general/routing.htmlも参照して ください

重要なビットは

(:num) は、数字のみを含むセグメントに一致します。(:any) は、任意の文字を含むセグメントに一致します。

注: ルートは、定義された順序で実行されます。上位のルートは常に下位のルートよりも優先されます。

于 2015-07-22T00:10:54.317 に答える