0

我有一个html选项,其中包含我的视图中的选项。 onchange我想调用我的控制器的动作。 重要事项:我不打算通过Ajax来做到这一点,因为onchange我的整个模块正在改变,所以我想每次更换时刷新页面。通过选择但不通过Ajax的转换来调用控制器的动作(Zend Framework)

    <select id="p_s"> 
        <?php foreach($this->active_services as $row){ ?> 
        <option value="<?php echo $row['ph_id'];?>"><?php echo $row['ph_name'];?></option> 
         <?php }?> 
        </select> 

我打电话的动作还包括下面的代码,所以我不打算通过ajax做到这一点。

  if(!$this->_request->isXmlHttpRequest()){ 
      //The request was not made with JS XmlHttpRequest 
       $user = new Zend_Session_Namespace('user'); 
       $user_id =$user->user_id; 
       $object = new Services(); 
       $active_services  = $object->Get_Current_User_Active_Services($user_id); 
       $this->view->assign('active_services',$active_services); 
      } 

我正在调用的操作是通过ajax和正常调用,这一次我称之为正常。 任何想法都会有所帮助。

+0

究竟什么是你的问题? – ventsislaf 2012-03-29 11:16:58

+0

@vencislaf先生,我的问题是,我想通过onchange的我的选择,而不是通过正常的方式调用我的控制器行动。 – 2012-03-29 11:25:58

回答

2
<select id="p_s"> 
    <?php foreach($this->active_services as $row) : ?> 
     <option value="<?php echo $this->url(array(
       "module" => "yourModule", 
       "controller" => "yourController", 
       "action" => "yourAction", 
       "p_s" => $row['ph_id'] 
      ), 
      $yourRouteName=null, 
      $reset=true); 
      ?> 
     "> 
      <?php echo $row['ph_name'];?> 
     </option> 
    <?php endforeach ?> 
</select> 

然后

$("#p_s").change(function() { 
    window.location.href = $(this).val(); 
}); 
+0

先生,我想发送$行['ph_id']作为我的行动的参数?你提供的代码是这样做的? – 2012-03-29 11:29:11

+0

yourRouteName ???例如please.sir plz不介意我的尴尬问题我是ZF的新手 – 2012-03-29 11:30:25

+1

如果您想使用您定义的自定义路由,'$ yourRouteName'是可选的。如果你不这样做,把它设置为null。 '$ row ['ph_id']'将被设置为'p_s'参数(参见''p_s“=> $ row ['ph_id']')。 – bububaba 2012-03-29 11:41:52

相关问题