如何通过html调用Controller Action在Zend Framework中选择更改选项?

时间:2012-03-09 12:53:57

标签: zend-framework zend-form-element zend-controller

我在视图中有以下html

<span style="float:right">  <label> Pattern :</label>
   <select>
     <option value="3*3">3*3</option>
     <option value="6*6">6*6</option>
     <option value="12*12">12*12</option>
  </select>
</span>

我想做的是,我想打电话给我的行动 onchange 让我们说

   if(3*3) call this
    public function 3by3Action(){}

   if(6*6) call this
    public function 6by6Action(){}

   if(12*12) call this
    public function 12by12Action(){}

3 个答案:

答案 0 :(得分:1)

在Zend Framework中,Actions是Controller类中的方法,可通过URL访问。例如,如果您的Controller类被称为“MathController”并且它包含一个名为“sixBySixAction”的操作,那么您将通过导航到类似于以下内容的URL来触发此操作:

http://baseUrl/math/six-by-six

请注意,action方法的名称在控制器类中是camel case,但在URL中用短划线分隔。这是Zend Framework的格式化要求。另请注意,控制器类名为“MathController”,但您只需将“math”放在URL中。

因此,您可以使用JavaScript为您的选择框分配一个onChange处理程序,它只是重定向到一个特定的URL,该URL通过访问特定控制器类中的特定操作方法来处理更改。

有关这方面的更多信息,请查看Zend Framework Programmer's Reference Guide中的this page

对于JavaScript部分,这里是一个如何重定向正在更改的选择框的示例。当然,你需要修改它,但它会让你开始:

<Script language="JavaScript">
  function goto(form) { var index=form.select.selectedIndex
    if (form.select.options[index].value != "0") {
      location=form.select.options[index].value;}
    }
</SCRIPT>

<FORM NAME="form1">
  <SELECT NAME="select" ONCHANGE="goto(this.form)">
    <OPTION VALUE="">-------Choose a Selection-------</OPTION>
    <OPTION VALUE="index.htm">Home</OPTION>
    <OPTION VALUE="web_development.htm">Web Development</OPTION>
    <OPTION VALUE="html_codes.htm">HTML Tips</OPTION>
    <OPTION VALUE="html_codes_chart.htm">HTML Code Chart</OPTION>
    <OPTION VALUE="javascript_codes.htm">JavaScript Codes</OPTION>
    <OPTION VALUE="216_color_chart.htm">Color Code Chart</OPTION>
  </SELECT>
</FORM>

答案 1 :(得分:1)

您需要更明确地了解为什么您想要像这样调用您的行为。

您可以使用AJAX获取操作产生的某些数据,也可以执行简单的重定向。这取决于你想要达到的目标。

AJAX解决方案:

  1. onchange事件处理程序附加到select
  2. 处理程序向服务器发出AJAX请求,以执行正确的操作。您可以使用$this->_helper->json($data)
  3. 从控制器轻松输出JSON数据
  4. 您从服务器获取信息并注入HTML文档

答案 2 :(得分:0)

将您的HTML更改为此

<select id="your_id">
  <option value="Threes">3*3</option>
  <option value="Six">6*6</option>
  <option value="Twele">12*12</option>
</select>

在js写这个

$("#your_id").change(function() {
var action = $("#your_id").val();
 var href= "Controller/"+action +"/";
     var data = your data;

     $.ajax({ type: "GET",
           url: href,
          data: data,
          success: function(response){

                  //do what u wana do
         }
           });
   }):

希望它有效