Laravel5.1 -控制器(初步了解)
首先道个歉 这篇笔记是前两天就应该写的,可大K有点事儿要忙 就耽误了,今天抽空学了学控制器,并写个笔记分享下。
为什么要使用控制器
像我们之前写一些逻辑呢都是在Route(路由)中,搞得Route文件特别庞大,其实我们应该把这些逻辑都抽到一个控制器里,路由分发后到控制器,控制器做相应的操作,比如关于后台的逻辑应该抽到AdminController中,Route文件只管分发。
1 如何创建一个控制器
1.1.1 创建RESTful控制器
至于什么是RESTful?自行百度- -,我先简单说下,它里面自动填充了一些增删改查的方法。OK 我们在Artisan控制台创建:
php artisan make:controller Admin\\HomeController
然后 我们在 app/Http/Controller/Admin/ 下找到它:
class HomeController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{ } /**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
} /**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
} /**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
} /**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
} /**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
} /**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
每个方法就是它的字面意思,至于怎么使用,我们来注册一条路由就清楚了。
1.1.2 实现RESTful路由
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function (){
Route::resource('/', 'HomeController');
});
resource是为RESTful风格的控制器注册多条路由的 我们可以在Artisan控制台看看:
php artisan route:list
如果没有什么错误的话,咱肯定会看见打印出来的表,表里面标明了每条路由的属性,如果你还是不太明白,那无所谓~咱以后的文章会频繁使用到这些内容哦。
1.2.1 普通控制器
在实际开发中啊 有时候咱不一定需要RESTful风格的服务器,我们只想要一个空的控制器来自己实现一些方法,可以这么生成:
php artisan make:controller UserController --plain
只要后面跟个plain标识符 就可以生成空的控制器啦。
1.2.2 单条路由使用控制器
上面是使用resource方法来对应控制器的动作了,像这种空的控制器咱怎么在路由中使用呢?
/**
* 控制器名@方法名 就可以了
*/
Route::get('/user', 'UserController@index'); /**
* 这是在配置一些其他东西时的写法,因为要在数组中嘛,它对应的KEY是uses。
*/
Route::get('/user', ['as' => 'showUser', 'uses' => 'UserController@index']);
然后自行实现UserController的index方法就可以咯:
class UserController extends Controller
{
public function index()
{
return '展示一些东西';
}
}
1.3.1 其实还有另一种写法 隐式控制器
这种路由我不太常用 先来看看语法吧:
Route::controller('/user', 'UserController');
首先 使用了controller来注册路由,第一个参数是路径没新鲜的,第二个参数是控制器 但是它没有跟着方法。因为它能自动根据路径相应到方法 看看下面控制器方法的实现。
class UserController extends Controller
{
/**
* 对应着 /user/ 路由 GET方式
*/
public function getIndex()
{
return '展示一些东西~';
} /**
* 对应着 /user/show/{id} 路由 GET方式
*/
public function getShow($id)
{
return '此用户ID为: '.$id;
} /**
* 对应着 /user/update/{id} 路由 POST方式
*/
public function postUpdate($id, Requests\Request $request){ }
}
这个控制器的方法开头都是HTTP请求的方式 最常用的就是GET 和 POST 后面跟的是方法名字,具体对应的路径在注释中写清楚了。
如果你想给这些路由命名的话,后面可以跟一个数组来命名:
Route::controller('/user', 'UserController',['getShow' => 'user.show']);
这样就可以给对应的方法命名了,oh funk 大K真的不喜欢这种方式,也许是没明白这样写的真谛把。
--今天关于控制器就先写这么多吧,具体逻辑实现咱还得学一些新的知识来结合使用,比如middleware啊和request还有blade模板引擎,但都不是很难~
最新文章
- 使用pngquant命令近乎无损压缩PNG图片大小减少70%左右
- Vue.js 2.0 参考手册.CHM下载
- sql索引组织
- Maven常用命令(转)
- Google的小秘密
- 关于ADMM的研究(一)
- Android中的六大布局
- Fedora 21 中添加及更新源的命令
- HttpServletRequest.getServletContext()一直提示找不到,而引出的问题
- [IOI2007] sails 船帆
- SQLServer之修改PRIMARY KEY
- $(function(){})简述
- python 条件与循环
- KVM之CPU虚拟化
- Spring data Jpa,Mybatis,读写锁,@Lock 使用
- 注解之@PathVariable
- python筛选特定文件的信息按照格式输出到txt
- 使用gulp压缩js详细步骤笔记
- linux shell 脚本攻略学习12--文件权限详解,chmod命令详解,chown命令详解,chattr命令详解
- 破局人工智能:构建AI,与腾讯云一起探索语音应用场景
热门文章
- javascript快速入门25--浏览器中的XML
- OOP几大原则【转】
- jstack来分析。当linux出现cpu被java程序消耗过高时
- Oracle Database Link 的创建和使用小见
- Java ArrayList的模拟实现
- web开发者的博客
- HTML5 Canvas 绘制库存变化折线 画入库出库柱状图
- Windows如何自定义U盘盘符、文件夹图标、文件夹背景
- android EditText inputType 及 android:imeOptions=”actionDone”
- MySQL错误Another MySQL daemon already running with the same unix socket.v