基礎(chǔ)控制器

2018-02-24 15:51 更新

這里是一個(gè)基礎(chǔ)控制器類的例子:

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class UserController extends Controller {

    /**
     * 顯示所給定的用戶個(gè)人數(shù)據(jù)。
     *
     * @param  int  $id
     * @return Response
     */
    public function showProfile($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }

}

我們可以通過(guò)如下方式引導(dǎo)路由至對(duì)應(yīng)的控制器動(dòng)作:

Route::get('user/{id}', 'UserController@showProfile');

注意: 所有的控制器都應(yīng)該擴(kuò)展基礎(chǔ)控制器類。

控制器和命名空間

有一點(diǎn)非常重要,那就是我們無(wú)需指明完整的控制器命名空間,在類名稱中 App\Http\Controllers 之后的部分即可用于表示「根」命名空間。 RouteServiceProvider 默認(rèn)會(huì)在包含根控制器命名空間的路由群組中,加載 routes.php 此文件。

若你要在 App\Http\Controllers 此目錄深層使用 PHP 命名空間以嵌套化或組織你的控制器,只要使用相對(duì)于 App\Http\Controllers 根命名空間的特定類名稱即可。因此,若你的控制器類全名為 App\Http\Controllers\Photos\AdminController,你可以像這樣注冊(cè)一個(gè)路由:

Route::get('foo', 'Photos\AdminController@method');

命名控制器路由

和閉包路由一樣,你也可以指定控制器路由的名稱。

Route::get('foo', ['uses' => 'FooController@method', 'as' => 'name']);

指向控制器行為的 URL

要產(chǎn)生一個(gè)指向控制器行為的 URL,可使用 action 輔助方法。

$url = action('App\Http\Controllers\FooController@method');

若你想僅使用相對(duì)于控制器命名空間的類名稱中的一部分,來(lái)產(chǎn)生指向控制器行為的 URL,可用 URL 產(chǎn)生器注冊(cè)控制器的根命名空間。

URL::setRootControllerNamespace('App\Http\Controllers');
$url = action('FooController@method');

你可以使用 currentRouteAction 方法來(lái)獲取正在執(zhí)行的控制器行為名稱:

$action = Route::currentRouteAction();

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)