Home > Backend Development > PHP Tutorial > Laravel 5 基础教程 || 3.控制器:任务的分发者

Laravel 5 基础教程 || 3.控制器:任务的分发者

WBOY
Release: 2016-06-23 13:28:40
Original
902 people have browsed it

Laravel 5 基础教程 || 3.控制器:任务的分发者 - 表严肃

教程目录

  • 1.安装与部署 - 表严肃
  • 2.路由:链接与控制器的连接者 - 表严肃
  • 3.控制器:任务的分发者 - 表严肃

控制器是个小媒人。

有时候我们发现直接把逻辑写到路由里要不了多久路由就变的及其肥大。

Route::get('/', function(){    ...    ...    ... // (?' ')????})
Copy after login

这个时候怎么办呢?

Controller到!

它一般是这么干活的:

通知Model:你给我准备数据。

通知View:你给我准备模板。

给浏览器返回渲染好的模板。

完工。

比如说我们上一节课的Hello部分就可以使用Controller实现。

Route::get('hello', 'HelloController@sayHello');
Copy after login

突然简洁好多有木有。
第一个传参依然是地址参数,第二个传参为字符串,@之前的指定controller,之后的部分指定此controller所使用的方法。

创建Controller

无论是windows还是unix都可以使用以下命令创建controller:

cd 我的/laravel根目录php artisan make:controller HelloController
Copy after login

如果返回类似... controller created successfully... 说明controller创建成功,这时候查看/app/Http/Controllers你会发现这个目录多了一个文件HelloController。

当然你可以手动创建Controller,但一般情况下用命令完全可以满足需求。

这时HelloController的内容是这样的:

...class HelloController extends Controller{    public function index()    {        }        ...}
Copy after login

可以将所有的方法删除,这些方法是artisan为我们创建的(但我好像从来不领情):

...class HelloController extends Controller{}
Copy after login

创建一个方法sayHello:

...class HelloController extends Controller{    public function sayHello($name)    {        return 'Hello' . $name . '.';    }}
Copy after login

这时的路由规则应为:

Route::get('hello/{name}', 'HelloController@sayHello');
Copy after login

地址栏传参:localhost:8888/hello/LiMing

有同学问,如果想让姓名成为可选项,也就是如果有姓名就输出"Hello + 姓名.",但如果没有姓名就直接输出"Hello there."要增么做呢?
在Laravel中可以这么干:

// 路由文件Route::get('hello'/{name?}', 'HelloController@sayHello');// 控制器...public function sayHello($name=null){    if(!$name)        return 'Hello there.';    else        return 'Hello ' . $name;}...
Copy after login

无耻硬广进

  • Laravel 5视频教程地址 - 表严肃讲堂(可试听)
  • 所有课程: biaoyansu.com

无耻硬广出

有问题请在下方评论,/撒花~

教程目录

  • 1.安装与部署 - 表严肃
  • 2.路由:链接与控制器的连接者 - 表严肃
  • 3.控制器:任务的分发者 - 表严肃
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template