2016-08-27 12 views
1

現在codeigniterを学習していますが、配線に関する問題があります。私のルートファイルは以下の通りです:CodeIgniterルート途中のパラメータ

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

$route['images/(:num)/upload/'] = 'image/upload/$1'; 
$route['images/(:num)'] = 'image/index/$1'; 

$route['yoyo/(:num)'] = 'yoyo/view/$1'; 

$route['default_controller'] = 'yoyo'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 

私の問題は最初のルートです。私はそれをルートの最後に移動せずに(:num)動かすことができません。私はstackoverflowを参照した後に見てきた他のルートに基づいて、これはうまくいくはずであるという印象を受けます。何か案は?

だから私が代わりに次のルートを追加する場合、それは動作します明確にする:

$route['images/upload/(:num)/'] = 'image/upload/$1'; 
+0

予約ルートは高いところに置いてください。 [docs](https://codeigniter.com/userguide3/general/routing.html#reserved-routes)(赤色で表示)の最後の見積もりを確認してください。「予約済みルートは、ワイルドカードまたは正規表現ルートの前に来なければなりません。 。 – Tpojka

+0

良い点。それは見つからなかった。私はそれを念頭に置くでしょう。 –

答えて

0
$route['images/(:num)/upload/'] = 'image/$1/upload'; 

編集:私は何をthinking..sorryました。

images/$1/uploadというルートは、コントローラimages ...と機能$1にアクセスすることを意味しているので、私はあなたに言ったコードを実行することはできません。

明らかに、あなたはそれを行うことはできません。

$route['images/upload/(:num)'] = 'image/upload/$1'; 


public class image extends CI_Controller 
{ 
    public function upload($arg0) {} 
} 

さらに多くの引数を渡したい場合は、ルートパスを続行するだけで済みます。

$route['images/upload/(:num)/(:any)'] = 'image/upload/$1/$2'; 

public function upload($arg0, $arg1) {} 
+0

私はこれを試しました: $ルート['images /(:num)/ upload /'] = 'イメージ/ $ 1 /アップロード'; 残念ながら私はまだ404を取得しています。 –

+0

@KimWardは私の編集を参照してください。 – Linesofcode

+0

それは私が働いた状態です。私は、URLのセグメント2をチェックしているコンストラクタにあるハック・コードのために、パラメータをルートの途中に置くことができることを期待していました。 –