2012-04-18 22 views
-2

我不得不依赖组合框选项不再被加入当表单提交+ zendFramework

$this->addElement('Select', 'Category',array(
     'label'  => 'Category:', 
     'AutoComplete'=> true,    
     'multiOptions' => array('0' => '-Category-',$a->GetCategories(),'2' => '-Add    category-'), 
     'required' => true)); 

    $this->addElement('Select', 'SubCategory',array(
      'label'  => 'Sub Category:', 
      'AutoComplete'=> true, 
      //'multiOptions' => array('0' => '-Select Category-'), 
      'required' => true)); 

第二个是使用AJAX

<script type="text/javascript"> 
    //for send data i'll use jquery library 
    $(document).ready(function(){ 
    $('#Category').change(function() { 
     var message=$('#Category option:selected').text(); 
     if (message != '') { 
     $.ajax({ 
      type: "GET", 
      dataType : 'json', 
      url: 'http://localhost/EverTags1/Authentification1/public/Product/add', 
      async: false, 
      data:{"message" : message}, 
      success: function (respond) { 
      var json=JSON.stringify(respond); 
      var objet = eval('(' + json + ')'); 
      e=objet.length; 
      var str = ""; 
      for (var count = 0 ; count < e; count++) { 
       str += "<option value='" + count + "'>" + objet[count].name+ "</option>" 
      } 
      $("#SubCategory").empty().append(""+str); 
      } 
     }); 
     } 
    }); 
    }); 
</script> 

元素填充物在所述第二正确装入组合框。但是当我提交第二个组合框的内容消失时。我如何让它们显示

回答

0

是否将selected='selected'属性添加到#SubCategory的第一个选项中修复它?

1

您需要在每个ajax请求后更新multioptions。我使用的会话做

public function getsubcategoriesAction() 
{ 
    if($this->_request->isXmlHttpRequest()) 
    { 
     $session = new Zend_Session_Namespace('mySession'); 
     $this->getRequest()->param('id',1) 
     $model = new Application_Model_DbTable_Subcategory(); 
     $result = $model->getSubcategories($category); 
     // save the result to session 
     $session->result = $result; 
     $this->_helper->json($result); 

    } 
} 

,并在渲染表单

public function createAction() 
{ 
    //some code here 

    if($this->getRequest()->isPost()){ 
     $session = new Zend_Session_Namespace('mySession'); 
     $subCategory = $form->getelement('subCategory'); 
     $subCategory->addMultiOptions($session->result); // get the result back from session 

     //some code here 
    } 
} 

你也需要让你的application.ini会议的行动

resources.session.save_path = APPLICATION_PATH "/../data/session" 
resources.session.use_only_cookies = true 
resources.session.remember_me_seconds = 864000