关于OpenCart的一个小提议
关于OpenCart的一个小建议
OpenCart是一套老牌的开源自由B2C电商系统,最近watch了其托管在在github上的项目,发现还是很活跃的,每天都有人反馈bug。
初步的看一下,它是支持在后台管理多个店铺的,而且可以同一个商品在不同店铺有不同的价格;店铺之间可以绑定不同的域名。这是一个比较有特色的地方。
但查看它的代码,就发现多年来改动很小,在代码的分工上,没有进化的感觉。
大量本该由视图来进行构造的数据如语言、链接、当前路径等,都放到控制器中,
像前台登录页面:
<code class="sourceCode php"><span class="kw">$data</span><span class="ot">[</span><span class="st">'breadcrumbs'</span><span class="ot">]</span> = <span class="fu">array</span><span class="ot">();</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'breadcrumbs'</span><span class="ot">][]</span> = <span class="fu">array</span><span class="ot">(</span> <span class="st">'text'</span> => <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_home'</span><span class="ot">),</span> <span class="st">'href'</span> => <span class="kw">$this</span>->url-><span class="fu">link</span><span class="ot">(</span><span class="st">'common/home'</span><span class="ot">)</span> <span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'breadcrumbs'</span><span class="ot">][]</span> = <span class="fu">array</span><span class="ot">(</span> <span class="st">'text'</span> => <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_account'</span><span class="ot">),</span> <span class="st">'href'</span> => <span class="kw">$this</span>->url-><span class="fu">link</span><span class="ot">(</span><span class="st">'account/account'</span><span class="ot">,</span> <span class="st">''</span><span class="ot">,</span> <span class="st">'SSL'</span><span class="ot">)</span> <span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'breadcrumbs'</span><span class="ot">][]</span> = <span class="fu">array</span><span class="ot">(</span> <span class="st">'text'</span> => <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_login'</span><span class="ot">),</span> <span class="st">'href'</span> => <span class="kw">$this</span>->url-><span class="fu">link</span><span class="ot">(</span><span class="st">'account/login'</span><span class="ot">,</span> <span class="st">''</span><span class="ot">,</span> <span class="st">'SSL'</span><span class="ot">)</span> <span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'heading_title'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'heading_title'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'text_new_customer'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_new_customer'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'text_register'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_register'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'text_register_account'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_register_account'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'text_returning_customer'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_returning_customer'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'text_i_am_returning_customer'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_i_am_returning_customer'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'text_forgotten'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'text_forgotten'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'entry_email'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'entry_email'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'entry_password'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'entry_password'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'button_continue'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'button_continue'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'button_login'</span><span class="ot">]</span> = <span class="kw">$this</span>->language->get<span class="ot">(</span><span class="st">'button_login'</span><span class="ot">);</span> <span class="kw">if</span> <span class="ot">(</span><span class="fu">isset</span><span class="ot">(</span><span class="kw">$this</span>->error<span class="ot">[</span><span class="st">'warning'</span><span class="ot">]))</span> { <span class="kw">$data</span><span class="ot">[</span><span class="st">'error_warning'</span><span class="ot">]</span> = <span class="kw">$this</span>->error<span class="ot">[</span><span class="st">'warning'</span><span class="ot">];</span> } <span class="kw">else</span> { <span class="kw">$data</span><span class="ot">[</span><span class="st">'error_warning'</span><span class="ot">]</span> = <span class="st">''</span><span class="ot">;</span> } <span class="kw">$data</span><span class="ot">[</span><span class="st">'action'</span><span class="ot">]</span> = <span class="kw">$this</span>->url-><span class="fu">link</span><span class="ot">(</span><span class="st">'account/login'</span><span class="ot">,</span> <span class="st">''</span><span class="ot">,</span> <span class="st">'SSL'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'register'</span><span class="ot">]</span> = <span class="kw">$this</span>->url-><span class="fu">link</span><span class="ot">(</span><span class="st">'account/register'</span><span class="ot">,</span> <span class="st">''</span><span class="ot">,</span> <span class="st">'SSL'</span><span class="ot">);</span> <span class="kw">$data</span><span class="ot">[</span><span class="st">'forgotten'</span><span class="ot">]</span> = <span class="kw">$this</span>->url-><span class="fu">link</span><span class="ot">(</span><span class="st">'account/forgotten'</span><span class="ot">,</span> <span class="st">''</span><span class="ot">,</span> <span class="st">'SSL'</span><span class="ot">);</span></code>
相当累赘,其实在现有框架特性下,完全可以放到视图文件中去的。
在视图文件的头部:
<code class="sourceCode php"><span class="kw"><?php</span><span class="kw">$lang</span> = <span class="kw">$this</span>->registry->get<span class="ot">(</span><span class="st">'language'</span><span class="ot">);</span><span class="co">//加载语言包管理对象</span><span class="kw">$url</span> = <span class="kw">$this</span>->registry->get<span class="ot">(</span><span class="st">'url'</span><span class="ot">);</span><span class="co">//加载url对象</span><span class="kw">$this</span>->language<span class="ot">(</span><span class="st">'common/footer'</span><span class="ot">);</span><span class="co">//载入语言包</span><span class="kw">?></span><footer> <div <span class="kw">class</span>=<span class="st">"container"</span>> <div <span class="kw">class</span>=<span class="st">"row"</span>> <<span class="ot">?</span>php <span class="kw">if</span> <span class="ot">(</span><span class="kw">$informations</span><span class="ot">)</span> { <span class="kw">?></span> <div <span class="kw">class</span>=<span class="st">"col-sm-3"</span>> <h5 id="span-class-ot-span-php-span-class-fu-echo-span-span-class-kw-lang-span-get-span-class-ot-span-span-class-st-text-information-span-span-class-ot-span-span-class-kw-span"><<span class="ot">?</span>php <span class="fu">echo</span> <span class="kw">$lang</span>->get<span class="ot">(</span><span class="st">'text_information'</span><span class="ot">);</span> <span class="kw">?></span></h5> <ul <span class="kw">class</span>=<span class="st">"list-unstyled"</span>> <<span class="ot">?</span>php <span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$informations</span> <span class="kw">as</span> <span class="kw">$information</span><span class="ot">)</span> { <span class="kw">?></span> <li><a href=<span class="st">"<?php echo </span><span class="kw">$information</span><span class="st">['href']; ?>"</span>><<span class="ot">?</span>php <span class="fu">echo</span> <span class="kw">$information</span><span class="ot">[</span><span class="st">'title'</span><span class="ot">];</span> <span class="kw">?></span></a></li> <<span class="ot">?</span>php } <span class="kw">?></span> </ul> </div> <<span class="ot">?</span>php } <span class="kw">?></span></code>
这样控制器中就不用再管这种无聊的事情,而集中精力负责业务逻辑和核心数据的调用了。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

System76 最近以其Cosmic 桌面環境引起了轟動,該環境計劃於8 月8 日與Pop!_OS 的下一個主要alpha 版本一起發布。 Cosmic DE開發商

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

第1部分:初始故障排除步驟檢查蘋果的系統狀態:在深入研究複雜的解決方案之前,讓我們先從基礎知識開始。問題可能不在於您的設備;蘋果的伺服器可能會關閉。造訪Apple的系統狀態頁面,查看AppStore是否正常運作。如果有問題,您所能做的就是等待Apple修復它。檢查您的網路連接:確保您擁有穩定的網路連接,因為「無法連接到AppStore」問題有時可歸因於連接不良。嘗試在Wi-Fi和行動數據之間切換或重置網路設定(「常規」>「重置」>「重置網路設定」>設定)。更新您的iOS版本:

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

這篇文章帶大家解讀vue原始碼,來介紹一下Vue2中為什麼可以使用 this 存取各種選項中的屬性,希望對大家有幫助!

同事因為this指向的問題卡住的bug,vue2的this指向問題,使用了箭頭函數,導致拿不到對應的props。當我跟他介紹的時候他竟然不知道,隨後也刻意的看了一下前端交流群,至今最起碼還有70%以上的前端程式設計師搞不明白,今天給大家分享一下this指向,如果啥都沒學會,請給我一個大嘴巴子。

data資料夾裡面是系統及程式的數據,例如軟體的設定和安裝包等,Data資料夾中各個資料夾則代表的是不同類型的資料存放資料夾,無論Data資料指的是檔案名稱Data還是擴充名data,都是系統或程式自訂的資料文件,Data是資料保存的備份類別文件,一般可以用meidaplayer、記事本或word開啟。
