控制器一般存放在app\Http\Controllers目录下,所有Laravel控制器都应继承基础控制器类。

基础控制器

  • 基础控制器例子:
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\User;
  4. use App\Http\Controllers\Controller;
  5. class UserController extends Controller
  6. {
  7. /**
  8. * 显示指定用户的个人数据。
  9. *
  10. * @param int $id
  11. * @return Response
  12. */
  13. public function showProfile($id)
  14. {
  15. return view('user.profile', ['user' => User::findOrFail($id)]);
  16. }
  17. }
  • 路由指定控制器行为:
  1. Route::get('user/{id}', 'UserController@showProfile');
  • 路由指定控制器行为:
  1. Route::get('user/{id}', 'UserController@showProfile');

RESTful资源控制器:

  • 资源控制器让你可以轻松地创建与资源相关的 RESTful 控制器,注册资源化路由:
  1. Route::resource('photos', 'PhotosController');

这一条路由声明会创建多个路由,用来处理各式各样和相片资源相关的的 RESTful 行为。

  • 由资源控制器处理的行为:

  • 附加资源控制器

    如果想在资源控制器中默认的资源路由之外加入其它额外路由,则应该在调用Route::resource之前 定义这些路由。否则,由resource方法定义的路由可能会不小心覆盖你附加的路由:
  1. Route::get('photos/popular', 'PhotosController@method');
  2. Route::resource('photos', 'PhotosController');

附:

RESTful资源控制器的更新和删除操作调用起来比较特殊,特在此贴点代码:

在view中调用删除操作:

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

在对应的控制器中进行删除操作:

  1. public function destroy($id)
  2. {
  3. Comment::find($id)->delete();
  4. return redirect()->back()->withInput()->withErrors('评论删除成功!');
  5. }

在view中调用更新操作:

  1. <form action="{{ url('admin/article/'.$article->id) }}" method="POST">
  2. {{ method_field('PATCH') }}
  3. {{ csrf_field() }}
  4. <input type="text" name="title" class="form-control" required="required" placeholder="请输入标题" value="{{ $article->title }}">
  5. <br>
  6. <textarea name="body" rows="10" class="form-control" required="required" placeholder="请输入内容">{{ $article->body }}</textarea>
  7. <br>
  8. <button class="btn btn-lg btn-info">提交修改</button>
  9. </form>

在对应的控制器中进行更新操作:

  1. public function update(Request $request,$id)
  2. {
  3. //数据验证
  4. $this->validate($request, [
  5. 'title' => 'required|max:255',
  6. 'body' => 'required',
  7. ]);
  8. $article = Article::find($id);
  9. $article->title = $request->get('title');
  10. $article->body = $request->get('body');
  11. if ($article->save()) {
  12. return redirect('admin/article')->withErrors('更新成功!');
  13. } else {
  14. return redirect()->back()->withInput()->withErrors('更新失败!');
  15. }
  16. }

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

Laravel5.1控制器小结的更多相关文章

  1. 关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复

    在laravel5.5中,可以根据控制器方法的参数类型,自动注入一个实例化对象,极大提升了编程的效率,但是相比较与Java的SpringMVC框架,功能还是有所欠缺,使用起来还是不太方便,主要体现在方 ...

  2. Laravel5.1 -控制器(初步了解)

    首先道个歉 这篇笔记是前两天就应该写的,可大K有点事儿要忙 就耽误了,今天抽空学了学控制器,并写个笔记分享下. 为什么要使用控制器 像我们之前写一些逻辑呢都是在Route(路由)中,搞得Route文件 ...

  3. kubernetes实践之四:深入理解控制器(workload)

    一.Pod与controllers的关系 controllers:在集群上管理和运行容器的对象 通过label-selector相关联 Pod通过控制器实现应用的运维,如伸缩,升级等 二.Deploy ...

  4. laravel5增删改查

    路由规则: 数据库配置: config/database.php laravel5/.env 控制器: 表单: 展示页面: 修改页面:

  5. [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言

                                  目       录 前言 前言 刚参加工作,使用过VB.VC开发软件,随着C#的崛起,听说是C++++,公司决定以后开发软件使用C#,凭借在 ...

  6. laravel有用的方法

    1.tinker 造假数据 factory('App\User',3)->create(); DB::table 返回collection,可以用collection中的很多方法 比如-> ...

  7. net core WebApi——使用xUnits来实现单元测试

    目录 前言 单元测试 xUnit 小结 附录 前言 从开始敲代码到现在,不停地都是在喊着记得做测试,记得自测,测试人员打回来扣你money之类的,刚开始因为心疼钱(当然还是为了代码质量),就老老实实自 ...

  8. Laravel5.1 报错:控制器不存在

    Laravel5.1 报错:控制器不存在 错误提示: Class App\Http\Controllers\Api/UserController does not exist 解决: (1)检查控制器 ...

  9. Laravel5.1的控制器分组

    Laravel5.1的控制器分组 默认的控制器时直接在app\Http\Controllers下,创建分组名字,路由配置使用:分组名\控制器名@方法名.

随机推荐

  1. CODESOFT中怎样打印数据库中的特定数据?

      CODESOFT可用于打印.标记和跟踪的零售库存标签软件,每种产品的售卖都代表着需要打印大量的条码标签.通常我们采用的方法就是在CODESOFT连接数据库批量打 印.但是如果数据量很大,该如何选择 ...

  2. GUI创建各常用控件(二)

    继续接着上一篇! 在我看来有一点需要申明:由于是GUI的相关知识,所以我只是在复习中粗略的总结而已,因此参考价值可能有限,更多的是当作自己学习的一个记录以及便于自己查阅. 好啦!干货继续: 1.类似于 ...

  3. Centos7 install Openstack - (第四节)添加计算服务(Nova)

    Centos7 install Openstack - (第四节)添加计算服务(Nova) 我的blog地址:http://www.cnblogs.com/caoguo 该文根据openstack官方 ...

  4. ButterKnife的简单使用

    刚刚学习Android,也不知道算不算已经入门!但是总感觉自己没有什么提高,所以就把一些学习内容写一遍下来. 今天接触了ButterKnife这个第三方框架 GitHub地址:https://gith ...

  5. jquery的end(),addBack()方法example

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. C# 请求外部服务的办法

    )     {                returnMenuBeizhu = ;             ).ToString()                         borrowT ...

  7. 安装npm

    npm是nodejs官方未nodejs定制的一个工具,是Node.js的包管理器,是Node Packaged Modules的简称,通过npm可以下载安装nodejs的模块包,nodejs有很多优秀 ...

  8. 现代福尔摩斯 - Oxygen Forensic Suite

    各位可曾听说过智能手机取证软件Oxygen Forensic Suite,它的logo是名侦探福尔摩斯一手抽着他的招牌雪茄,一手拿着放大镜,全神贯注地正进行调查工作. 使用过它的取证人员必定会对它的提 ...

  9. Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?

    这篇文章最早是杜老师写的,看完感触很深,加上之前跟咨询公司的朋友也讨论过这方面的问题,所以结合自己的经验,做了些删改(得到了杜老师的授权). 先通过下面几个简单的问题来了解技术服务: 问题1:技术服务 ...

  10. grep,awk和sed的常用命令和语法

    Grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:“m y s t r i n g”.这样做有两个原因,一是以防被误解为 s h ...