2014-03-14 28 views
2

在官方Prestashop論壇上沒有得到任何回覆,我想我會嘗試轉向你們,我的第一篇文章。謝謝閱讀。Prestashop - 如何將自定義輸入字段添加到產品定製並寫入數據庫

我正在構建一個銷售個性化商品的網站,我必須限制每個商品的自定義字段中輸入的字符,這是Prestashop仍然可悲的缺失的功能,所以我正在努力將以我爲特色。

經過一番修改,我的前端很好地工作,使用maxlength在ps_customization_field的新字段'max_chars'中使用從數據庫中讀取的值來限制定製輸入字段中允許的字符(輸入值現在手動)

但現在我已經達到了我的知識的極限,儘管我狩獵和修補我無法完成最後一點,所以希望有人比我更能幫助我。

基本上,在後臺創建定製字段時,我需要一個額外的輸入字段,允許我爲每個定製輸入max_chars,然後我需要將此值寫入ps_customization_field的max_chars字段中的數據庫表。

TL:DR如何在後臺產品定製區域創建新字段並將輸入保存到數據庫。

親切的問候, 克萊夫

回答

0

你關於「如何輸入保存到我的分貝」太泛在一個單一的答案來回答問題。查看SQL查詢和PDO是如何工作的,因爲它們可能會讓你知道如何啓動。在前臺

顯示您的自定義字段可以做到使用Smarty如下:

{foreach $inputfields as $field} 
    <input type="{$field.type}" name="{$field.name}" maxlength="{$field.maxlength}"> 
{/foreach} 
+0

感謝您的回覆,我很欣賞我可能不會像描述性一樣。 我想我真的是指'在哪裏'而不是'如何',因爲有許多類似命名的函數有許多php和tpl文件。無論我嘗試什麼,我似乎都無法找到添加額外字段的地方,以便它與產品的定製相關。 我在想,它可能超越了我。我發現很難理解爲什麼prestashop中沒有包含這樣一個基本特徵。 再次感謝您的回覆, Clive – user3418914

+0

這似乎可能有用:http://www.prestashop.com/forums/topic/13859-solved-adding-new-fields-to-new-account/# entry174229 我想你可以通過專門搜索「如何添加自定義字段prestatshop」來找到答案。 –

0

我想你應該創建一個模塊。只需製作一個模塊即可向管理產品控制器添加一個選項卡,並列出所有已創建的自定義字段。然後,用簡單的id_customization => maxcharacter關係創建一個表單。

您需要的最後一件事是在該模塊中創建一個鉤子並將其添加到保存定製的產品前端控制器中(我認爲在initContent內部)。這個鉤子會執行驗證,並可能通過拋出錯誤(當然是prestashop的錯誤)來取消進程。

因此,您可以爲您的字段添加一些額外的驗證,如類型驗證或其他任何內容。

如果你從來沒有它,你應該試試這個:create a module

這裏有一些額外的線索:

掛鉤的額外產品標籤:

$this->registerHook('displayAdminProductsExtra') 

創建驗證掛鉤:

$this->registerHook('CFvalidation') 

處理它:

public function hookCFvalidation($param) 
{ 
    //Validate the customized values in the $_POST 
    //return formated errors if any or nothing if it's valid 
} 

它添加在overrided產品控制器:

[...] 
if (Tools::isSubmit('submitCustomizedDatas')) 
{ 
    $this->errors[] = Hook::exec('CFvalidation'); 
    [...] 
} 
+0

謝謝您花時間回答,我會研究您建議的內容。 – user3418914

0

要顯示你輸入你需要覆蓋的方法_displayLabelFieldcontrollers/admin/AdminProdutsController.php

要更新字段,您需要覆蓋classes/Product.php中的方法updateLabels

+0

感謝您花時間回答,我會研究您的建議。 – user3418914

相關問題