路由配置 路由組 允許共用路由屬性,例如中間件和命名空間等,我們沒有必要為每個路由單獨設置共有屬性,共有屬性會以數組的形式放到 Route::group 方法的第一個參數中。 中間件('middleware' => 'auth'),驗證用戶是否登錄。 命名空間 ('namespace' => 'Ad ...
路由配置
Route::group(['middleware' => 'auth', 'namespace' => 'Admin', 'prefix' => 'admin'], function() {
Route::get('/', 'HomeController@index'); // 匹配包含 "/admin/" 的 URL Route::resource('article', 'ArticleController');// 匹配包含 "/admin/article" 的 URL
Route::post('/upload', 'UploadController@index');// 匹配包含 "/admin/upload" 的 URL
});
路由組 允許共用路由屬性,例如中間件和命名空間等,我們沒有必要為每個路由單獨設置共有屬性,共有屬性會以數組的形式放到 Route::group 方法的第一個參數中。
中間件('middleware' => 'auth'),驗證用戶是否登錄。
命名空間 ('namespace' => 'Admin') ,指定組內所有控制器公共的 PHP命名空間。
路由首碼 ('prefix' => 'admin'),可以給每個路由組中的路由加上指定的 URI 首碼。這裡我們給路由組中所有的 URI 加上路由首碼 admin 。
資源路由 (Route::resource), 可以匹配一組URI。匹配的詳情如下。
動作 | URI | 操作 | 路由名稱 |
---|---|---|---|
GET | /article |
index | article.index |
GET | /article/create |
create | article.create |
POST | /article |
store | article.store |
GET | /article/{article} |
show | article.show |
GET | /article/{article}/edit |
edit | article.edit |
PUT/PATCH | /article/{article} |
update | article.update |
DELETE | /article/{article} |
destroy | article.destroy |
controller
php artisan make:controller Admin/HomeController php artisan make:controller Admin/UploadController php artisan make:controller Admin/ArticleController
執行以上三條命令,建立後臺使用的controller。第一個是後臺首頁,第二個是處理上傳,最後一個是管理文章。
在ArticleController里需要建立與資源路由匹配的各種方法才能實現資源路由的各種功能。
public function index() { $articles = DB::table('articles') ->select('id', 'body', 'title') ->orderBy('id', 'desc') ->paginate(5); return view('admin/article/index', ['articles' => $articles]); }
以上是文章列表功能,這裡指定了表名、列、排序和分頁。然後取出的數據放到view里顯示。
這裡集成了七牛實現上傳到雲的功能。
執行以下命令可以安裝七牛PHP的SDK
composer require qiniu/php-sdk
把從七牛申請的密鑰寫在.env里,然後controller里可以用env函數來讀取。這樣可以保證發佈的版本不會泄露自己的重要信息。
view
在resources/views 目錄下建立admin目錄,然後建立home.blade.php,用來顯示後臺首頁。然後admin目錄下建立article子目錄,併在其中建立create.blade.php 、edit.blade.php 、index.blade.php 三個文件。用來實現新建文章、編輯文章和文章列表。
要點:
- 前臺顯示文章正文有兩種方法:{!! $article->body !!} 和 {{ $article->body }},前面的可以原樣輸出正文的HTML,而後面的會把HTML轉義,從而在瀏覽器前臺輸出HTML代碼,而不是讓瀏覽器解析HTML。
- ajax提交圖片上傳時,一定要在header中附加上X-CSRF-TOKEN,否則後臺如果沒收到的話,會報錯。寫法參考:'X-CSRF-TOKEN': '{{ csrf_token() }}'
挑選了各環節的一些要點寫出來在博客中,源代碼可以在我的GitHub上獲取到。歡迎交流。