presenter 层的用法?

presenter的作用是把view层中复杂的逻辑代码抽象出来,在presenter层写出来,在模板中渲染

 public function input_field()
    {
        if($this->wrappedObject->type === 'select')
        {
            $options = $this->wrappedObject->settingSelectOptions;
            $str = "<select name=".$this->wrappedObject->name." class='form-control'>";
            foreach($options as $key=>$value)
            {
                if($this->wrappedObject->value == $value['id'])
                {
                    $str .= "<option selected value='".$value['id']."'>".$value['body']."</option>";
                }
                else
                {
                    $str .= "<option value='".$value['id']."'>".$value['body']."</option>";
                }
            }
            $str .= "</select>";
            return $str;
        }
        if($this->wrappedObject->type === 'text')
        {
            $name = $this->wrappedObject->name;
            $value = $this->wrappedObject->value;
            $str = <<<str
<input class="form-control" name="$name" value="$value">
str;
            return $str;
        }
    }

那么在blabe模板中很简单
{!! $setting->input_field !!}渲染就完事了,但是在php代码里用字符串写html标签,这又脱离了模板和逻辑分离的MVC架构模式,在php里写标签也特别容易出错
presenter层存在的意义到底是什么呢?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
  • 可以方便调用,重复调用
  • 不只是说HTML这么简单,可以做的还有很多其他的,例如把时间戳的转成Y-m-d H:i:s格式等,而不是把转化过程写在模板上面
7年前 评论

以后修改起来,只要修改一个地方

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!