2

これは Laravel での私の最初のプロジェクトです。

目標は、CMS を作成することです。すべてのページには独自の「スラッグ」があるため、ページThis is a testに という名前を付けると、そのスラッグは になりますthis-is-a-test。にアクセスしてそのページを表示できるようにしますexample.com/this-is-a-test

そのためには、次のようなことをしなければならないと思います。

Route::any('(:any)', 'view@index');

そして、index メソッドで View というコントローラーを作成します。大丈夫ですよね?

問題は管理領域の作成です。領域内にいくつかのページを作成します。いくつかの例は、ダッシュボード、ページ、設定、およびツールです。これらはすべて管理画面のサブページなので、ネストされたコントローラーにするのが適切だと思いましたよね? 唯一の問題は、にアクセスしたときに/admin、ダッシュボード ( /admin/dashboard) を直接表示したいことです。管理コントローラーからリダイレクトするのではなく、ダッシュボード コントローラーを呼び出すことをお勧めし/admin/dashboardます。それは可能ですか?

だから、私が何を意味するかを説明するために:

example.com/admin -> loads admin.dashboard
example.com/admin/dashboard -> also loads admin.dashboard

これが私のすべてのルートです:

Route::get('admin', array('as' => 'admin', 'use' => 'admin.dashboard@index'));
Route::get('admin/dashboard', array('as' => 'admin_dashboard', 'use' => 
Route::any('/', 'view@index'); // Also, should this be below or above the admin routes? This route will show the actual cms pages.'admin.dashboard@index'));

そして、ここに私の admin_dashboard コントローラがあります:

class Admin_Dashboard_Controller extends Base_Controller {

    public $restful = true;    

    public function get_index()
    {
        return 'in dashboard';
    }

}

ビュー コントローラは、機能する管理ページへのリンクを表示するだけです。管理ルートの何が問題なのかわかりませんか?にアクセスし/adminたりadmin/dashboard、空白のページが表示されadmin/blahたりしblablaても、404 ではありません何か不足していますか?

4

1 に答える 1

3

コントローラーの命名規則を誤解していました。

これがその方法です

controllers
    admin
        admin_dashboard.php   Containing controller Admin_Dashboard_Controller

次のようになります。

controllers
    admin
        dashboard.php         Containing controller Admin_Dashboard_Controller

つまり、コントローラーのファイル名の先頭に「admin」を追加するべきではありませんでした。今はすべて正常に動作します。

私は実際にこれにもルーティングコードを縮小することができました:

Route::get(array('admin', 'admin/dashboard'), array('as' => 'admin', 'uses' => 'admin.dashboard@index'));
于 2012-11-08T20:26:46.650 に答える