2014-02-25 22 views
0

我在SocialEngine(*建立在Zend框架v1.9上)中創建了一個模塊,其中包含一個帶有幾個選項的管理表單。SocialEngine/Zend中表單的問題

我與它的問題是,它似乎沒有從數據庫中的字段值刷新頁面後,它顯示我的默認值。

它在我保存後立即顯示正確的值(*但我不確定頁面是否在保存後刷新),但不是刷新後。

控制器/application/modules/Mymodule/controllers/AdminSomesettingsController.php

class Mymodule_AdminSomesettingsController extends Core_Controller_Action_Admin 
{ 
    public function indexAction() 
    { 
    $this->view->form = $form = new Mymodule_Form_Admin_Someform(); 

    $settings = Engine_Api::_()->getApi('settings', 'core'); 

    if(!$form->isValid($settings->mymodule)) 
    { return $form->populate($settings->mymodule); } 

    if(!$this->getRequest()->isPost()) { return; } 
    if(!$form->isValid($this->getRequest()->getPost())) { return; } 

    $db = Engine_Api::_()->getDbTable('settings','core')->getAdapter(); 
    $db->beginTransaction(); 
    try { 
     $values = $form->getValues(); 
     $settings->mymodule = $values; 

     $db->commit(); 
    } catch(Exception $e) { 
     $db->rollback(); 
     throw $e; 
    } 

    $form->saveValues(); 

    $form->addNotice('Your changes have been saved.'); 
    } 
} 

形式/application/modules/Mymodule/Form/Admin/Someform.php

class Mymodule_Form_Admin_Someform extends Engine_Form 
{ 
    public function init() 
    { 
    $this 
     ->setTitle('My Settings') 
     ->setDescription('Settings'); 

    $this->addElement('Radio', 'some_setting', array(
     'label' => 'Some Setting', 
     'description' => '', 
     'multiOptions' => array(
     0 => 'Option One', 
     1 => 'Option Two', 
     2 => 'Option Three', 
    ), 
     'value' => 1, 
     'escape' => false, 
    )); 

    // Add submit button 
    $this->addElement('Button', 'submit', array(
     'label' => 'Save Changes', 
     'type' => 'submit', 
     'ignore' => true 
    )); 
    } 
    public function saveValues() 
    { 
    } 
} 

我檢查過其他插件,在我看來,$form->populate($settings->mymodule);重新填充刷新後的表單,但它不適用於我。 任何想法如何讓它顯示數據庫中的值(*當這些值存在時)而不是默認值?

回答

1

我自己是新來socialengine和socialengine的zend.My瞭解說,做一個函數saveValues()烏爾窗體類裏面,然後從控制器動作稱其爲$形式 - > saveValues(),傳遞參數作爲needed.This是socialengine似乎遵循約定,並形成類saveValues()內,U可以節省衣被合計爲needed.Ur形式shud填充僅如果驗證失敗

(!$form->isValid($formData)) { return $form->populate($formData); }

而不是默認適配器,U應該試試這個 -

$db =Engine_Api::_()->getDbTable('settings','core')->getAdapter(), 
$db->beginTransaction(); 

如果你想設置一個特定字段的值嘗試 - $ form-> populate(array('formField'=>'urValue'));在烏爾情況而定 -

$val=$settings->mymodule, 
$form->populate('formField'=>$val); 
+0

謝謝,我今天會試試。 – George

+0

您是否介意提供您的一個管理員表格和控制器的完整示例?非常感謝。 – George

+0

正如我所說,我自己新的......大聲笑,havnt做出任何管理形式呢。但是任何形式的過程都是一樣的。我確定$ db = Engine_Api :: _() - > getDbTable('settings','core') - > getAdapter(),將在你的情況下工作......讓我們來檢查一下bro .ocialengine幾乎沒有任何教程。我通過試用瞭解n錯誤。先試試看看它是怎麼回事 – Tanvir

0

您可以添加控制器$代碼形式 - > some_setting->的setValue( '1');