-2

私はコンボボックスに依存する必要があります

 $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 ));

2番目のものは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>

要素は 2 番目のコンボボックスに正しく読み込まれました。しかし、送信すると、2 番目のコンボボックスの内容が消えます。それらを表示するにはどうすればよいですか

4

2 に答える 2

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
于 2012-04-19T18:37:37.747 に答える
0

selected='selected'#SubCategory の最初のオプションに属性を追加 すると修正されますか?

于 2012-04-19T10:41:21.027 に答える