• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于OpenCart的一个小建议

php 搞代码 3年前 (2022-01-23) 15次浏览 已收录 0个评论

OpenCart是一套老牌的开源自由B2C电商系统,最近watch了其托管在在github上的项目,发现还是很活跃的,每天都有人反馈bug。

初步的看一下,它是支持在后台管理多个店铺的,而且可以同一个商品在不同店铺有不同的价格;店铺之间可以绑定不同的域名。这是一个比较有特色的地方。

但查看它的代码,就发现多年来改动很小,在代码的分工上,没有进化的感觉。

大量本该由视图来进行构造的数据如语言、链接、当前路径等,都放到控制器中,

像前台登录页面:

<code><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>]</span> = <span>array</span><span>();</span><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>][]</span> = <span>array</span><span>(</span><span>'text'</span> => <span>$this</span>->language->get<span>(</span><span>'text_hom<b style="color:transparent">(、本文来源gao@!dai!ma.com搞$$代^@码网*</b><i>搞gaodaima代码</i>e'</span><span>),</span><span>'href'</span> => <span>$this</span>->url-><span>link</span><span>(</span><span>'common/home'</span><span>)</span><span>);</span><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>][]</span> = <span>array</span><span>(</span><span>'text'</span> => <span>$this</span>->language->get<span>(</span><span>'text_account'</span><span>),</span><span>'href'</span> => <span>$this</span>->url-><span>link</span><span>(</span><span>'account/account'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>)</span><span>);</span><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>][]</span> = <span>array</span><span>(</span><span>'text'</span> => <span>$this</span>->language->get<span>(</span><span>'text_login'</span><span>),</span><span>'href'</span> => <span>$this</span>->url-><span>link</span><span>(</span><span>'account/login'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>)</span><span>);</span><span>$data</span><span>[</span><span>'heading_title'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'heading_title'</span><span>);</span><span>$data</span><span>[</span><span>'text_new_customer'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_new_customer'</span><span>);</span><span>$data</span><span>[</span><span>'text_register'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_register'</span><span>);</span><span>$data</span><span>[</span><span>'text_register_account'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_register_account'</span><span>);</span><span>$data</span><span>[</span><span>'text_returning_customer'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_returning_customer'</span><span>);</span><span>$data</span><span>[</span><span>'text_i_am_returning_customer'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_i_am_returning_customer'</span><span>);</span><span>$data</span><span>[</span><span>'text_forgotten'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_forgotten'</span><span>);</span><span>$data</span><span>[</span><span>'entry_email'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'entry_email'</span><span>);</span><span>$data</span><span>[</span><span>'entry_password'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'entry_password'</span><span>);</span><span>$data</span><span>[</span><span>'button_continue'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'button_continue'</span><span>);</span><span>$data</span><span>[</span><span>'button_login'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'button_login'</span><span>);</span><span>if</span><span>(</span><span>isset</span><span>(</span><span>$this</span>->error<span>[</span><span>'warning'</span><span>]))</span> {            <span>$data</span><span>[</span><span>'error_warning'</span><span>]</span> = <span>$this</span>->error<span>[</span><span>'warning'</span><span>];</span>        } <span>else</span> {            <span>$data</span><span>[</span><span>'error_warning'</span><span>]</span> = <span>''</span><span>;</span>        }        <span>$data</span><span>[</span><span>'action'</span><span>]</span> = <span>$this</span>->url-><span>link</span><span>(</span><span>'account/login'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>);</span><span>$data</span><span>[</span><span>'register'</span><span>]</span> = <span>$this</span>->url-><span>link</span><span>(</span><span>'account/register'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>);</span><span>$data</span><span>[</span><span>'forgotten'</span><span>]</span> = <span>$this</span>->url-><span>link</span><span>(</span><span>'account/forgotten'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>);</span></code>

相当累赘,其实在现有框架特性下,完全可以放到视图文件中去的。

在视图文件的头部:

<code><span><?php</span><span>$lang</span> = <span>$this</span>->registry->get<span>(</span><span>'language'</span><span>);</span><span>//加载语言包管理对象</span><span>$url</span> = <span>$this</span>->registry->get<span>(</span><span>'url'</span><span>);</span><span>//加载url对象</span><span>$this</span>->language<span>(</span><span>'common/footer'</span><span>);</span><span>//载入语言包</span><span>?></span><footer>  <div <span>class</span>=<span>"container"</span>>    <div <span>class</span>=<span>"row"</span>>      <<span>?</span>php <span>if</span><span>(</span><span>$informations</span><span>)</span> { <span>?></span>      <div <span>class</span>=<span>"col-sm-3"</span>>        <h5><<span>?</span>php <span>echo</span><span>$lang</span>->get<span>(</span><span>'text_information'</span><span>);</span><span>?></span></h5>        <ul <span>class</span>=<span>"list-unstyled"</span>>          <<span>?</span>php <span>foreach</span><span>(</span><span>$informations</span><span>as</span><span>$information</span><span>)</span> { <span>?></span>          <li>"<?php echo </span><span>$information</span><span>['href']; ?>"</span>><<span>?</span>php <span>echo</span><span>$information</span><span>[</span><span>'title'</span><span>];</span><span>?></span></li>          <<span>?</span>php } <span>?></span>        </ul>      </div>      <<span>?</span>php } <span>?></span></code>

这样控制器中就不用再管这种无聊的事情,而集中精力负责业务逻辑和核心数据的调用了。

以上就介绍了关于OpenCart的一个小建议,包括了github方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于OpenCart的一个小建议

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址