Laravel5.1控制器小結


控制器一般存放在app\Http\Controllers目錄下,所有Laravel控制器都應繼承基礎控制器類。

基礎控制器

  • 基礎控制器例子:
<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * 顯示指定用戶的個人數據。
     *
     * @param  int  $id
     * @return Response
     */
    public function showProfile($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}
  • 路由指定控制器行為:
Route::get('user/{id}', 'UserController@showProfile');
  • 路由指定控制器行為:
Route::get('user/{id}', 'UserController@showProfile');

RESTful資源控制器:

  • 資源控制器讓你可以輕松地創建與資源相關的 RESTful 控制器,注冊資源化路由:
Route::resource('photos', 'PhotosController');

這一條路由聲明會創建多個路由,用來處理各式各樣和相片資源相關的的 RESTful 行為。

  • 由資源控制器處理的行為:
  • 附加資源控制器
    如果想在資源控制器中默認的資源路由之外加入其它額外路由,則應該在調用Route::resource之前 定義這些路由。否則,由resource方法定義的路由可能會不小心覆蓋你附加的路由:
Route::get('photos/popular', 'PhotosController@method');
Route::resource('photos', 'PhotosController');

附:

RESTful資源控制器的更新和刪除操作調用起來比較特殊,特在此貼點代碼:
在view中調用刪除操作:

<form action="{{ url('admin/article/'.$article->id) }}" method="POST" style="display: inline;">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button type="submit" class="btn btn-danger">刪除</button>
</form>

在對應的控制器中進行刪除操作:

public function destroy($id)
{
    Comment::find($id)->delete();
    return redirect()->back()->withInput()->withErrors('評論刪除成功!');
}

在view中調用更新操作:

<form action="{{ url('admin/article/'.$article->id) }}" method="POST">
    {{ method_field('PATCH') }}
    {{ csrf_field() }}
    <input type="text" name="title" class="form-control" required="required" placeholder="請輸入標題" value="{{ $article->title }}">
    <br>
    <textarea name="body" rows="10" class="form-control" required="required" placeholder="請輸入內容">{{ $article->body }}</textarea>
    <br>
    <button class="btn btn-lg btn-info">提交修改</button>
</form>

在對應的控制器中進行更新操作:

public function update(Request $request,$id)
{
    //數據驗證
    $this->validate($request, [
        'title' => 'required|max:255',
        'body' => 'required',
    ]);

    $article = Article::find($id);
    $article->title = $request->get('title');
    $article->body = $request->get('body');

    if ($article->save()) {
        return redirect('admin/article')->withErrors('更新成功!');
    } else {
        return redirect()->back()->withInput()->withErrors('更新失敗!');
    }
}

附加的這些代碼只供參考,沒有實際意義


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM