LaraStore商城系统优化之:给控制器减肥 2016-12-17

最近在研发新版LaraStore V3.2的时候 做了大量的代码优化,其中一项就有给控制器减肥!

下面我们用一段 用户注册的控制代码来演示如何给控制器减肥。


我们看看注册表单,一共要接受

phone 手机号码

code    验证码

email   电子邮件

password  账户密码


我们直接讨论控制的部分,如果把注册业务逻辑全部写在控制器。

【1】验证表单 (手机号完整性 + 电子邮件格式 + 密码位数 +是否同意条款)

【2】验证手机验证码

【3】验证通过后 表单数据写入用户模型 注册流程完成。



如果把业务逻辑全部写在控制器里面 是这样的效果

下面 我们给控制器来减肥


【1】把短信验证码的正确性验证 合并到 Laravel框架的验证类中去。

【2】使用Form和RegisterForm类来分层管理 表单的验证和表单数据的存储


扩展系统的Validator类,添加短信验证码正确性验证

在validatorServiceProvider中添加如下代码

$this->app['validator']->extend('sms', function ($attribute, $value, $parameters)
        {
             $sms       = new Sms();
             if($sms->put('phone',request()->phone)->get() == $value){
                return true;
             }
             return false;
 });

然后在 config/app.php中注册validatorServiceProvider

//在$providers数组中添加
 App\Providers\ValidatorServiceProvider::class,


这样我们就可以直接使用 如下方式验证短信验证码的正确性了

'code'=>'required|sms'


统一了表单的验证一致性,下面我们进一步来简化 验证+存储  这2个操作。

我们分别创建 2个类

//表单处理类
LaraStore\Forms\Form
//注册表单处理类
LaraStore\Forms\RegisterForm



注册表单类 继承于Form类


最后我们可以看看优化后的控制的部分


注册表单控制器成功减肥!只需要两行代码即可!这种方法也可以用于所有表单存储操作的优化!


相关参考

【1】LaraCasts视频教程

本文章为 LaravelStore官网原创 转载请注明出处。谢谢合作!