0

私はコハナ3.0の下に私のウェブサイトを持っています。これはデフォルトのルートで完全に機能します

Route::set('default', '(<controller>(/<action>(/<id>)))')
     ->defaults(array(
          'controller' => 'user',
      'action'     => 'index',
    ));

このアドレスで自分のWebサイトにアクセスしようとするとhttp://127.0.0.1/web/、URLがロードされますhttp://127.0.0.1/web/user。大丈夫です。しかし、今度はコントローラーの下にadminディレクトリを追加したいと思います。だから私のウェブツリーはこのように見えます

classes
|  controller/
       Admin/
          dashboard
       web.php
|  model

管理者がこのようなURLで管理者のページにアクセスできるようにしたいと思います http://127.0.0.1/admin/dashboard。ここで、ダッシュボードは管理者のディレクトリの下にあるコントローラーです。これでブートストラップファイルを変更します

Route::set('admin', '<directory>(/<controller>(/<action>(/<id>)))',
        array('directory' => '(admin)'))->defaults(array(
        'controller' => 'user',
        'action'     => 'index',
    ));

を介して管理セッションにアクセスできhttp://127.0.0.1/web/admin/dashboard/ ますが、デフォルトのコントローラーであるにアクセスできませんhttp://127.0.0.1/web/Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI: コントローラのデフォルトアクセスが欠落しているというエラー。次のリンクから自分のWebサイトにアクセスできるように[ルーティング]を設定するにはどうすればよいですか。

http://127.0.0.1/web/

http://127.0.0.1/web/admin/dashboard/

編集 コハナのドキュメントから、それは書かれています

In this example, we have controllers in two directories, admin and affiliate. Because this route will only match urls that begin with admin or affiliate, the default route would still work for controllers in classes/controller.
Route::set('sections', '<directory>(/<controller>(/<action>(/<id>)))',
    array(
        'directory' => '(admin|affiliate)'
    ))
    ->defaults(array(
        'controller' => 'home',
        'action'     => 'index',
    ));

ソース :http://kohanaframework.org/3.0/guide/kohana/routing#examples

今、私は自分のコードを次のように変更します

Route::set('default', '<directory>(/<controller>(/<action>(/<id>)))',
        array(
            'directory' => '(admin)'))
        ->defaults(array(
        'controller' => 'user',
        'action'     => 'index',
    ));

しかし、私はこのエラーがあります

Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI: 

次のようなデフォルトのコントローラーにアクセスしたいときhttp://127.0.0.1/user/index

4

2 に答える 2

1

このルートは次のように変換されますhttp://127.0.0.1/admin/web。ただし、フォルダにはコントローラAdminが含まれている必要があります。user

Route::set('default', '<directory>(/<controller>(/<action>(/<id>)))',
    array(
        'directory' => '(admin)'))
    ->defaults(array(
    'controller' => 'user',
    'action'     => 'index',
));

ディレクトリをオプションにする場合は、次のことを行う必要があります。

Route::set('default', '(<directory>(/<controller>(/<action>(/<id>))))',
    array(
        'directory' => '(admin)'
    )
)
    ->defaults(array(
    'directory' => 'admin', 
    'controller' => 'dashboard',
    'action'     => 'index',
));

ただし、あなたの場合、複数のルートが必要です。「すべてをキャッチ」ルートの上に、次のように配置します。

Route::set('user', 'user(/<controller>(/<action>(/<id>)))')
->defaults(array(
    'directory' => 'user',
    'controller' => 'user',
    'action'     => 'index',
));

Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))')
->defaults(array(
    'directory' => 'admin',
    'controller' => 'dashboard',
    'action'     => 'index',
));

Route::set('default', '(/<controller>(/<action>(/<id>)))')
->defaults(array(
    'controller' => 'index',
    'action'     => 'index',
));
于 2012-12-11T20:08:40.360 に答える
0

内部にディレクトリを挿入してみてください->defaults

Route::set('whatever', 'whatever')
    ->defaults(array(
    'directory' => 'admin',
    'controller' => 'user',
    'action' => 'index',
    ));
于 2012-12-11T18:28:42.577 に答える