次日 第一步 學習使用命令的方式建立視圖模板 php artisan generate:view admin._layouts.default 命令解釋 生成視圖模板文件,文件存放於視圖目錄下 /view /admin /_layouts default.blade.php // 解釋一下,這個是模板文件,若是是用命令生成的那麼內容是空的,須要手動去修改. 頁面修改(admin/_layouts/default.blade.php) <!doctype html> <html> <head> <meta charset="utf-8"> <title>Learn Laravel 4</title> <!-- 從外部引入資源 --> @include('admin._partials.assets') </head> <body> <div class="container"> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="brand" href="{{ URL::route('admin.pages.index') }}">Learn Laravel 4</a> <!-- 這個標記是用來外部引入資源的. --> @include('admin._partials.navigation') </div> </div> </div> <hr> <!-- 這個標記是處理在模板繼承的過程當中內容塊的位置 --> @yield('main') </div> </body> </html> 第二步,用命令生成登陸模板 php artisan generate:viw admim.auth.login 編輯內容 (admin/auth/login.blade.php) 注意註釋代碼的書寫方式. {{-- 這個就是模板繼承的標記,同php的繼承是同樣的. --}} @extends('admin._layouts.default') {{-- 繼承了一個基本的佈局模板--}} {{-- 這個標記會查詢父類模板中@yield的位置,以下代碼到@stop爲止,都會被父類模板中的@yield('main') 替換.--}} @section('main') <div id="login" class="login"> {{--開啓表單功能 --}} {{ Form::open() }} @if ($errors->has('login')) <div class="alert alert-error">{{ $errors->first('login', ':message') }}</div> @endif <div class="control-group"> {{--表單的字段 --}} {{ Form::label('email', 'Email') }} <div class="controls"> {{ Form::text('email') }} </div> </div> <div class="control-group"> {{--表單字段--}} {{ Form::label('password', 'Password') }} <div class="controls"> {{ Form::password('password') }} </div> </div> <div class="form-actions"> {{--表單的提交--}} {{ Form::submit('Login', array('class' => 'btn btn-inverse btn-login')) }} </div> {{--關閉表單--}} {{ Form::close() }} </div> @stop 第三步,初步探視控制器 在app/controller 下新建文件夾admin 使用命令來生成控制 php artisan generate:controller admin/AuthController 初次生成,會看到控制器內有基本的crud操做的method_name ,能夠保留, 如今嘗試寫一個登陸的控制器 <?php // 這個文件的命名空間 namespace App\Controllers\Admin; // 這個是,以下操做會使用到的對象. use Auth, BaseController, Form, Input, Redirect, Sentry, View; class AuthController extends BaseController { /** * 顯示登陸頁面 * @return View */ public function getLogin() { // 使用view對象的make方法,生成登陸頁面 return View::make('admin.auth.login'); } /** * POST 登陸驗證 * @return Redirect */ public function postLogin() { // 接受從post傳遞過來的數據, $credentials = array( 'email' => Input::get('email'), 'password' => Input::get('password') ); // 異常處理,若是鑑權成功,使用重定向跳轉,不然拋出異常. try { $user = Sentry::authenticate($credentials, false); if ($user) { return Redirect::route('admin.pages.index'); } } catch(\Exception $e) { return Redirect::route('admin.login')->withErrors(array('login' => $e->getMessage())); } } /** * 註銷 * @return Redirect */ public function getLogout() { Sentry::logout(); return Redirect::route('admin.login'); } 第四步 僅僅有控制器還不可以去訪問,還的須要路由來處理 Route::get('admin/logout', array('as' => 'admin.logout', 'uses' => 'App\Controllers\Admin\AuthController@getLogout')); // 使用get的方式去訪問, Route::get('admin/login', array('as' => 'admin.login', 'uses' => 'App\Controllers\Admin\AuthController@getLogin')); Route::post('admin/login', array('as' => 'admin.login.post', 'uses' => 'App\Controllers\Admin\AuthController@postLogin')); Route::group(array('prefix' => 'admin', 'before' => 'auth.admin'), function() { Route::any('/', 'App\Controllers\Admin\PagesController@index'); Route::resource('articles', 'App\Controllers\Admin\ArticlesController'); Route::resource('pages', 'App\Controllers\Admin\PagesController'); }); // 路由過濾 Route::filter('auth.admin', function() { if ( ! Sentry::check()) { return Redirect::route('admin.login'); } }); // 詳細的路由知識能夠看底層代碼. 此時能夠用路由來訪問網站了, 若是出現錯誤 ***類不存在等問題,能夠使用命令 composer dump-autoload 來更新autoload.php 文件 若是還提示其餘的頁面文件找不到,參考上述方法,自行生成 第五步: 生成填充數據 執行命令 php artisan generate:seed sentry <?php // Composer: "fzaninotto/faker": "v1.3.0" use Faker\Factory as Faker; class SentryTableSeeder extends Seeder { public function run() { // run方法內的內容是手動寫上去的,請注意.自動生成的內容不是這樣的. DB::table('users')->delete(); DB::table('groups')->delete(); DB::table('users_groups')->delete(); Sentry::getUserProvider()->create(array( 'email' => 'oo@xx.com', 'password' => "ooxx", 'first_name' => 'OO', 'last_name' => 'XX', 'activated' => 1, )); Sentry::getGroupProvider()->create(array( 'name' => 'Admin', 'permissions' => ['admin' => 1], )); // 將用戶加入用戶組 $adminUser = Sentry::getUserProvider()->findByLogin('oo@xx.com'); $adminGroup = Sentry::getGroupProvider()->findByName('Admin'); $adminUser->addGroup($adminGroup); } } 在app/databases/seed/databaseseeder.php 中添加 $this->call('SentrySeeder'); 隨後執行命令 php artisan db:seed 數據已填充,能夠嘗試去登陸.