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层存在的意义到底是什么呢?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2
  • 可以方便调用,重复调用
  • 不只是说HTML这么简单,可以做的还有很多其他的,例如把时间戳的转成Y-m-d H:i:s格式等,而不是把转化过程写在模板上面
6年前 评论

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

6年前 评论

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