2017-03-14 157 views
0

我目前正在爲prestashop開發一個模塊,但我無法找到關於數據庫中數據註冊的信息。你有什麼想法如何做到這一點?模塊prestashop

我開始喜歡這個在我的控制器創建自己的狀態:

/** 
* Assign template vars related to page content 
* @see FrontController::initContent() 
*/ 
public function initContent() 
{ 
    parent::initContent(); 

    $this->setTemplate('upload.tpl'); 
} 

public function renderForm() 
{ 
    $fields_form = array(
     'form' => array(
      'input' => array(
       array(
        'type' => 'file', 
        'label' => $this->l('Insert file here.'), 
        'name' => 'FILE_NAME', 
        'required' => true 
       ), 
      ), 
      'submit' => array(
       'title' => $this->l('Save'), 
      ) 
     ), 
    ); 

    $helper = new HelperForm(); 
    $helper->show_toolbar = false; 
    $helper->table = $this->table; 
    $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); 
    $helper->default_form_language = 1; 
    $helper->fields_value['FILE_NAME'] = ""; 
    $this->fields_form = array(); 
    $helper->submit_action = 'btnSubmit'; 

    return $helper->generateForm(array($fields_form)); 
} 

謝謝

回答

0

其實你必須處理從表單自己的反應。 簡短的回答是「做這樣的事情在你的模塊PHP主文件」:在DB

protected function postProcess() 
{ 
    $errors = array(); 

    if (Tools::isSubmit('submitFormName')) 
    { 
     if (!Configuration::updateValue('FORM_INPUT_NAME', Tools::getValue('FORM_INPUT_NAME'))) 
      $errors[] = $this->l('Cannot update settings'); 
    } 
    } 

配置:: updateValue($鍵,$值)存儲簡單的字符串。您可以添加一些功能(請參閱Configuration.php類)。 處理它的最好方法是檢查他們在modules/mailalerts/mailalerts.php中做了些什麼來更好地瞭解如何去做。這是一個很好的例子。

0

Matt Loye給你一個簡單的方法來保存數據。但是,如果您想創建自己的表格,則必須在安裝過程中執行此操作。如果你想要更多的例子,你可以瀏覽默認已經安裝的模塊。

您可能想告訴我們您使用的版本,因爲這些模塊在PS 1.6和PS 1.7之間有點不同。

以下示例是我爲PS 1.7編寫的自定義模塊的一部分。

安裝
public function install() 
{ 
    if (!parent::install() || !$this->createTables() 
    ) { 
     return false; 
    } 
    return true; 
} 

protected function createTables() 
{ 
    $res = (bool)Db::getInstance()->execute(' 
     CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'my_table` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
      `column1` varchar(255) NOT NULL, 
      `column2` varchar(255) NOT NULL, 
      PRIMARY KEY (`id`) 
     ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; 
    return $res; 
} 

卸載
public function uninstall() 
{ 
    if (!parent::uninstall() || !$this->deleteTables()){ 
     return false; 
    } 
    return true; 
} 

protected function deleteTables() 
{ 
    return Db::getInstance()->execute(' 
     DROP TABLE IF EXISTS `'._DB_PREFIX_.'my_table`; 
    '); 
} 

數據登記

protected function postProcess() 
{ 

    if (Tools::isSubmit('submitFormName')) 
    { 
     //INSERT 
     Db::getInstance()->execute(' 
      INSERT INTO `'._DB_PREFIX_.'my_table'` (`column1`, `column2`) 
      VALUES('.$column1.', '.$column2.')' 
     ); 
     //OR DELETE DATA 
     Db::getInstance()->execute(' 
      DELETE FROM `'._DB_PREFIX_.'my_table' ` 
      WHERE `id` = '.(int)$id 
     ); 
    } 
}