Laravel 控制器 Controller

1、控制器存在的意義

路由能夠分發請求;
路由中還能夠引入 html 頁面;
咱們能夠在 route/web.php 中搞定一切了;
可是若是把業務邏輯都寫入到路由中;
那路由將龐大的難以維護;
因而控制器就有了很明顯的存在價值;
把業務邏輯寫在控制器中;
路由只負責轉發請求到指定的控制器便可;php

 

2、建立控制器

咱們能夠直接使用 Laravel 內置的命令生成不少代碼,例如控制器;html

artisan 就是 laravel 的命令行接口;
就是根目錄下的 artisan 文件;laravel

下面來使用命令建立一個控制器web

php artisan make:controller ArticleController

運行完成後會生成一個 app/Http/Controllers/ArticleController.php 文件app

 

 

 

接下來就須要在新建立的控制器中寫各類方法,可是,只要在剛剛的命令中加入一個參數就能夠自動生成一些方法框架

php artisan make:controller ArticleController --resource

若是直接運行的話是會報錯的;
提示 Controller already exists!
由於咱們剛已經建立過 ArticleController了;
因此咱們須要先把 app/Http/Controllers/ArticleController.php 文件刪掉再運行;
那麼會再次生成一個 app/Http/Controllers/ArticleController.php 文件;spa

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

增刪改查的方法都定義好了;
連註釋都給寫好了;命令行

這實際上是按 RESTful 規範生成的格式;
除了 GET POST 它還包含了一大堆請求方式;
PUT 、 PATCH 、 DELETE 、HEAD 、OPTIONS;
也就是說 Route:: 後面還能夠跟上面這些方法;code

Route::put('article', function () {
    return view('article');
});

 

3、什麼是 artisan 

laravel 是一個現代化框架;
它對命令行有着很是好的支持;
artisan 就是 laravel 的命令行接口;
就是根目錄下的 artisan 文件;orm

 

咱們能夠把它理解爲命令行級的單入口文件;
跟 index.php 文件的使命同樣;
全部的命令行都從它這走;
因此若是想使用命令行;
就須要 cd 到項目的根目錄下;
或者手動指定一長串路徑;

 

 在命令行中以 php 開頭意思是用 php 來執行某個文件;
php index.php 意思就是使用 php 的命令行模式運行 index.php ;
命令行下是能夠不須要文件後綴就能識別的;

你能夠建立個 test 的文本文件,而後在裏面寫一些php代碼,使用命令行 php test 也是能夠正常運行的;
因此根目錄下的 artisan 文件並無帶上 .php ;

 命令行主要有兩個方向的應用;
第一是生成文件;
第二是執行任務;

4、路由綁定控制器方法

在上面生成的控制器方法 index 中寫入以下代碼

 

 

而後寫一個路由綁定這個控制器方法,在  routes/web.php 中添加以下代碼

Route::get('article/index', 'ArticleController@index');

 

打開連接 

http://127.0.0.1:8000/article/index

 

 

相關文章
相關標籤/搜索