0

Laravel では、デフォルトのコントローラーはHome_Controller. ただし、フロントエンドと呼ばれるコントローラーがあります。これをホームコントローラーの代わりに使いたい。

このようなルートを登録すると:

Route::controller(Controller::detect());

へのリクエストは、/offerのようにホーム コントローラ内から処理されますhome@offerfrontend@offerサイトのルートから使用してアクセスしたい-好きではありません/frontend/offer

私は何をすべきか?前もって感謝します。

4

3 に答える 3

1

Home_ControllerはLaravel3に存在するハードコードされた規則の1つですが、Frontend_Controllerメソッドを指すルーティングを定義する方法はまだあります。私の好みです。

Route::any('/(index|offer|something)', function ($action)
{
    return Controller::call("frontend@{$action}");
});

これに関する制限は、でサポートされているすべての「アクション」メソッドを定義する必要があることですFrontend_Controller

于 2013-03-08T17:30:11.343 に答える
1

私の推測では、Home_Controller がある種のデフォルトであると考える唯一の理由は、Controller::detect(); を使用しているためです。Home_Controller が特別なものであると思わせるドキュメントは、実際には何も見たことがありません。実際、例のドキュメントではルーティングされているようにも見えません。それを考えると、私の最初の提案は、 Controller::detect() を取り除き、それで問題が解決するかどうかを確認することです。

それを除けば、ホームという名前のルートとしてフロントエンドを登録しようとしましたか? URL::home() が行うことはすべて、「ホーム」ルートを検索し、そこにリダイレクトするだけのようです。コントローラーのルーティングを使用する場合、これは何かの効果で行うことができます。

Route::get('/',
    array(
         'as' => 'home',
         'uses' => 'frontend@index'
    )
);

それとも、それはあなたの望む効果ではありませんか? 他の方法では見つからないすべてのルートをフロントエンド コントローラーにリダイレクトしますか?

URL の見栄えが気になる場合は、おそらく .htaccess ファイルでいくつかの書き換えルールを使用して、/frontend/index へのルーティングのプロセス全体をユーザーに透過的にすることができます。

于 2013-03-10T03:54:39.963 に答える
0

これを routes.php に追加してください:

Route::get('/', array('as' => 'any.route.name', 'uses' => 'frontend@offer'));

/他のルートがある場合は、それを削除してください。

于 2013-03-08T12:00:10.033 に答える