路由可以分发请求;
路由中还可以引入 html 页面;
我们可以在 route/web.php 中搞定一切了;
但是如果把业务逻辑都写入到路由中;
那路由将庞大的难以维护;
于是控制器就有了很明显的存在价值;
把业务逻辑写在控制器中;
路由只负责转发请求到指定的控制器即可;
ok;那我们开始创建控制器;
啥?你要手动创建文件?
no;既然用上了现代话框架;
必须得用有点逼格的方式干这苦力活了;
好了;下面插播一段 artisan
的内容;
laravel 是一个现代话框架;
它对命令行有着非常好的支持;
artisan 就是 laravel 的命令行接口;
就是根目录下的 artisan 文件;
我们可以把它理解为命令行级的单入口文件;
跟 index.php 文件的使命一样;
所有的命令行都从它这走;
所以如果想使用命令行;
就需要 cd 到项目的根目录下;
或者手动指定一长串路径;
啥?还有人问什么 cd ?
好吧;还好我有扫盲文章 插播一篇windows下git bash命令行使用的文章
起手式就是 php artisan
;
在命令行中以 php 开头意思是用 php 来执行某个文件;php index.php
意思就是使用 php 的命令行模式运行 index.php ;
命令行下是可以不需要文件后缀就能识别的;
所以根目录下的 artisan 文件并没有带上 .php ;
命令行主要有两个方向的应用;
第一是生成文件;
第二是执行任务;
我们马上就要用它生成控制器文件;
php artisan make:controller ArticleController
如果人品正常;
那么会生成一个 app/Http/Controllers/ArticleController.php 文件;
打开是这个样子的;
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
//
}
不但自动创建了文件;
而且还定义好了命名空间;
继承好了父级控制器;
我们直接写增删改查的方法就可以了;
ok;说干就干吧;
啥?你要手动写方法?
no;既然用上了现代话框架;
必须得用有点逼格的方式干这苦力活了;
来给上面的命令行加个--resource
选项;
php artisan make:controller ArticleController --resource
如果直接运行的话是会报错的;
提示 Controller already exists!
;
因为我们刚已经创建过 ArticleController了;
所以我们需要先把 app/Http/Controllers/ArticleController.php 文件删掉再运行;
如果人品正常;
那么会再次生成一个 app/Http/Controllers/ArticleController.php 文件;
打开是这个样子的;
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController 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)
{
//
}
}
怎么样?
惊不惊喜?
开不开心?
有木有被惊die了
不但增删改查的方法都定义好了;
连注释都给写好了;
这其实是按 RESTful 规范生成的格式;
除了 GET POST 它还包含了一大堆请求方式;
PUT 、 PATCH 、 DELETE 、HEAD 、OPTIONS;
也就是说 Route:: 后面还可以跟上面这些方法;
Route::put('article', function () {
return view('article');
});
// ...
RESTful 是本篇文章的一个扩展题;
童鞋们可以搜索了解下;
如果被概念搞的有点懵;
没关系;
留给以后慢慢搞;
现在咱只用 GET POST 足够学习了;
ok;我们开始在方法中写业务逻辑吧;
啥?你要手动写代码?
废话;不然用脚动写?
别看了;
下面没惊喜了;
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客https://baijunyao.com 欢迎捐赠赞赏加入组织创建QQ群及捐赠渠道
超 :请问laravel6有没有不用注入Request的方式获取请求数据? 或者不在controller里取得个有效的实例化Request比如把Request封到自己的类里, 方便测试, Request还是好用的...想在其它地方(非controller里) 实例化一个有效的Request
2019-12-21 15:56:22 回复
云淡风晴 :可以用 request() 函数;比如说 request()->input('name') ;
2019-12-21 17:07:38 回复
初音未来 :啊啊
2019-12-05 09:18:47 回复
bentai :最近在复现laravel-bjybolg 看到在控制器中做update 操作中 依赖注入ORM, 比如这个public function update(Store $request, Article $articleModel, ArticleTag $articleTagModel, $id) ,我直接use 过了,已经可以直接使用了为什么还要这样写?
2019-12-04 17:49:53 回复
云淡风晴 :两种方式都可以;
2019-12-21 17:08:30 回复
小雨的叶香伦 :白兄还是这么皮
2019-06-27 15:31:51 回复
_leeker :不错不错
2019-04-01 14:18:26 回复
虾 :社会了。
2018-06-21 11:51:09 回复
大海 :谢谢大佬
2018-05-28 17:08:22 回复
点杠 :白大侠,请问Laravel里类似ThinkPHP的$this->success() 和$this->error()该怎么写
2018-03-25 20:21:14 回复
████████████ :最后几句笑出声
2018-03-07 22:37:18 回复
rk :博主,读到此,不得不评论一下了。终于明白“优雅”的意思是工匠帮你完成那些手工编程的苦逼活,也就是博主说的现代化的Laravel要逼格高一点,装装逼,让童鞋们吃惊到傻眼。事实上,这就好比DW自动生成代码……那些年前端工程师不懂编程就可视化做网页一样;或者更Django映射生成控制器一样,只见黑客般代码一行行自动在黑屏幕上翻滚,逼格都高得受不了……
2018-02-03 17:12:17 回复
云淡风晴 :你看到了优雅的表面;深入使用可得其精髓;
2018-02-05 00:27:54 回复
蓝图 :学习了,刚加入了帅白的技术群
2018-01-26 12:24:58 回复
云淡风晴 :多谢支持;
2018-02-05 00:28:02 回复
luke :666 赞一个 学习了
2018-01-06 17:22:03 回复
北丰 :很皮的程序员,语言秀的飞起啊
2018-01-03 10:22:09 回复
师丨爷 :签到
2017-12-31 11:34:12 回复
最新评论