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('更新失败!');
    }
}

附加的这些代码只供参考,没有实际意义

posted @ 2016-08-25 14:34  宋子庆  阅读(1699)  评论(0编辑  收藏  举报