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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
  • 可以方便调用,重复调用
  • 不只是说 HTML 这么简单,可以做的还有很多其他的,例如把时间戳的转成 Y-m-d H:i:s 格式等,而不是把转化过程写在模板上面
7年前 评论

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

7年前 评论