1

次のコントローラを持つ:

class Admin_Images_Controller extends Admin_Controller
{
    public $restful = true;

    public function __construct()
    {
        parent::__construct();
    }

    public function get_index($id)
    {
        echo $id;
    }

エラーが表示されるので、ID のパラメーターなしでアクセスすると機能する理由がわかりませんmissing parameter for ...が、実際にパラメーターを渡そうとするとhttp://site/admin/images/12エラーが発生し404ます。私は何が欠けていますか?

ルートで次のように設定しようとしましたが、どちらも成功しませんでした:

Route::any('admin/images', array(
    'as' => 'admin_images',
    'uses' => 'admin.images@index',
));
    //or 
Route::any('admin/images/(:any)', array(
    'as' => 'admin_images',
    'uses' => 'admin.images@index',
));

ワイルドカードに関する私の問題は、私のテスト Linux 環境 (ubuntu) で 90% 発生するようです。これが、現在使用しているroutes.phpですhttp://pastebin.com/f86A3Usx

4

4 に答える 4

2

同じエイリアス(admin_images)を使用している可能性があります。また、注文を確認してください。次のように、より具体的なものを最初に置き、下に行くにつれてより一般的になります。

Route::any('admin/images/(:any?)', array('uses' => 'admin.images@index'));

読みやすくするために、エイリアスを削除しました。

于 2013-01-10T05:58:55.093 に答える
1
Route::get('admin/images/(:any)', 'admin.images@index');
于 2013-01-10T06:55:57.163 に答える
1

更新されたルート:

Route::any('admin/images/(:any?)', array(
    'as' => 'admin_images',
    'uses' => 'admin.images@index',
));

各エンドポイントのルートを組み合わせることで、ルーティングを簡素化できます。「?」を追加する 最初のパラメータに、これは何でも存在できることを意味しますが、存在する必要はありません。したがって、/ admin/images/admin/ images/1234の両方がカバーされます。

更新されたコントローラー:

class Admin_Images_Controller extends Admin_Controller
{
    public $restful = true;

    public function __construct()
    {
        parent::__construct();
    }

    public function get_index($id=null)
    {
        echo $id;
    }

    // ...
}

メソッドパラメータに「=null」を追加すると、この関数への両方のルートを処理できるようになります。メソッド内で「nullに等しい」をチェックするだけで、各シナリオをカバーすることができます。

于 2013-01-11T16:46:57.197 に答える
1

デフォルト値 (null/false/1 など) を渡して、$id パラメータをオプションにする必要があります。

public function get_index($id = null)
{
    if($id){ 
        echo $id;
    }else{
        echo "No ID given!";
    }   
}

ルートで (:any?) を使用します。

于 2013-01-11T09:34:23.650 に答える