Laravel路由和控制器的綁定

路由和控制器的關係php

路由文件地址在\app\Http\routes.php,咱們來看兩種不一樣的路由。html

Route::get('/', function () {
    return view('welcome');
});


Route::get('/hi', function () {
    return 'hello world';
});

以上均爲綁定匿名函數的路由,雖然能夠返回視圖,也能夠返回字符串,但本質都是同樣的。laravel

Route::get('/blog','BlogController@index');
Route::get('/post/{slug}','BlogController@showPost');

這兩種是綁定控制器的路由,控制器類BlogController下有兩個函數,index和showPost,能夠調用。bash

那麼問題來了,究竟應該選用哪一種?mvc

你不可能把複雜的業務邏輯都寫在一個匿名函數裏,因此你要學會新建控制器。app

Route::get('/mvc', 'MyController@hello');  

一.添加新控制器函數

控制器文件夾地址在Laravel文件夾下\app\Http\Controllers,咱們繼續使用artisan控制檯建立一個新控制器post

php artisan make:controller MyController

而後,回到控制器目錄,一份新的MyController.php文件被建立了,代碼以下:this

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

class MyController extends Controller
{
    //
}

咱們修改MyController類,同時再建立一個視圖。spa

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

class MyController extends Controller
{
	public function hello()
	{
		return View('myview');
	}
}

若是這麼寫,就意味着一旦用戶訪問URL:laravel/public/mvc,路由就會交給MyController控制器的hello函數,hello函數返回myview視圖,即返回myview.blade.php

 咱們看看myview.blade.php的代碼

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-10 col-md-offset-1">
            <div class="panel panel-default">
                <div class="panel-heading">{{ $d1 }}</div>

                <div class="panel-body">
                    this is my view!
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

這裏的{{ $d1 }}但願用一個變量的值來代替,因此,咱們把MyController控制器修改成

class MyController extends Controller
{
	public function hello()
	{
		return View('myview',['d1'=>'a1']);
	}
}
相關文章
相關標籤/搜索