Laravel 5.1.4 + Bootstrap 3.3.5 笔记四:Laravel 控制器
2015-08-12 21:55
501 查看
在前文中,我们把用户的请求响应逻辑放在路由中处理,实际情况下这不现实,也没有前方代码那么简单。
而大部分情况下,用户的请求操作是放在Controller中处理的(这不包含业务处理逻辑)。
Laravel 的所有控制器是在 app/Http/Controllers 目录中。
在 resources/views 下新建视图 hw.php,内容如下:
修改 routes.php,修改后的代码如下:
打开浏览器访问:http://localhost:801/hw,如下图示:
![](http://img.blog.csdn.net/20150810211419061?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150810211947586?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150810212231031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
现在,我们假设开发一个Web系统,包含两个模块:普通用户模块(Visit)和系统管理模块(Manage)。
A.在 app/Http/Contollers 目录中分别新建两个模块的控制器子目录:Visit、Manage;
B.在 resources/views 下创建两个子目录:Visit、Manage,并在 Visit下创建子目录:Home;
C.把上例创建的 HomeController 移动到上一步新建的 Visit 中。修改后的代码如下:
D.修改routes.php代码段为:
现在,再次访问:http://localhost:801/hw/calvin,依然是正确的。
事实上我们也可以在控制器的构造函数中处理:
另外,还有隐式控制器、RESTful、路由缓存等等,后文再继续补充。
而大部分情况下,用户的请求操作是放在Controller中处理的(这不包含业务处理逻辑)。
Laravel 的所有控制器是在 app/Http/Controllers 目录中。
1 创建简单的控制器
1.1 无参数的控制器
在目录 app/Http/Controllers 目录中新建文件 HomeController.php,代码如下:<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; class HomeController extends Controller { public function hw() { return view('hw'); } }
在 resources/views 下新建视图 hw.php,内容如下:
<html> <body> Hello World! </body> </html>
修改 routes.php,修改后的代码如下:
<?php Route::get('/', function () { return view('welcome'); }); Route::get('/hw', 'HomeController@hw');
打开浏览器访问:http://localhost:801/hw,如下图示:
1.2 控制器向视图传递参数
当Controller需要向View传递参数时,是这样的,修改控制器的hw方法:public function hw() { return view('hw',['name'=>'CBW']); }修改hw.php视图页代码:
<html> <body> [<?php echo $name; ?>],您好! </body> </html>再次访问如下 :
1.3 控制器从路由读取参数并传递
当控制器需要从路由获取参数时,是这样的,修改上例示的路由代码段:Route::get('/hw/{name}', 'HomeController@hw');修改控制器的hw方法:
public function hw($name) { return view('hw',['name'=>$name]); }然后再次访问:http://localhost:801/hw/calvin,如下图示:
2 路由器深入
2.1 控制器和命名空间
一般情况下,一个应用系统将由多个子项目组成,比如一个网站有前台和后台,前台有新闻功能用于阅读,后台有新闻功能用于管理。现在,我们假设开发一个Web系统,包含两个模块:普通用户模块(Visit)和系统管理模块(Manage)。
A.在 app/Http/Contollers 目录中分别新建两个模块的控制器子目录:Visit、Manage;
B.在 resources/views 下创建两个子目录:Visit、Manage,并在 Visit下创建子目录:Home;
C.把上例创建的 HomeController 移动到上一步新建的 Visit 中。修改后的代码如下:
<?php namespace App\Http\Controllers\Visit; use App\Http\Controllers\Controller; class HomeController extends Controller { public function hw($name) { return view('Visit.Home.hw',['name'=>$name]); } }
D.修改routes.php代码段为:
Route::get('/hw/{name}', 'Visit\HomeController@hw');E.把视图文件hw.php移动到 resources/views/Visit/Home 下;
现在,再次访问:http://localhost:801/hw/calvin,依然是正确的。
2.2 控制器中间件
在前文中我们已经演示了中间件的使用,再回顾一下上文的示例:Route::get('/user/{age}', ['middleware' => 'my', function ($age) { return '用户年龄:'.$age; }]);
事实上我们也可以在控制器的构造函数中处理:
class UserController extends Controller { public function __construct() { $this->middleware('my'); } }
另外,还有隐式控制器、RESTful、路由缓存等等,后文再继续补充。
相关文章推荐
- 《基于BootStrap3的JSP项目实例教程》第2讲
- 《基于BootStrap3的JSP项目实例教程》第1讲
- bootstrap affix附加导航
- bootstrap 旋转木马carousel 图片轮播
- Android微信内置浏览器 bootstrap vertical-align:middle 无效的问题
- bootstrap 三种提示框 (tooltip工具提示+popover弹出框+alert警告框)
- bootstrap笔记
- Bootstrap全局css
- ASP.NET MVC+Bootstrap 实现短信验证
- atitit。html css框架Bootstrap  Foundation的比较与不同 attilax大总结
- atitit。html css框架Bootstrap Foundation的比较与不同 attilax大总结
- atitit。html css框架Bootstrap Foundation的比较与不同 attilax大总结
- bootstrap 兼容ie7ie8ie9ie10
- bootstrap插件小记
- bootstrap div 右对齐
- bootstrap 垂直导航 PS:一个很实用的~~布局吧~~词穷
- bootstrap 导航适配屏幕+滚动监听+JQuery删除块
- 积跬步,聚小流------Bootstrap学习记录(4)
- bootstrap multiselect学习网址
- 积跬步,聚小流------Bootstrap学习记录(3)