Как вызвать действие контроллера через html Выберите параметры изменения в Zend Framework? - PullRequest
0 голосов
/ 09 марта 2012

у меня есть следующий 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 ]

1 голос
/ 09 марта 2012

Вам нужно быть более точным в , почему вы хотите называть свои действия такими.

Вы можете использовать AJAX для получения некоторых данных, созданных вашими действиями, или вы можете сделать простое перенаправление. Это зависит от того, чего вы хотите достичь.

Решение AJAX:

  1. прикрепить обработчик событий onchange к select
  2. обработчик выдает AJAX-запрос на сервер для правильного действия. Вы можете легко выводить данные JSON из контроллера, используя $this->_helper->json($data)
  3. вы получаете информацию с сервера и внедряете в ваш HTML-документ
1 голос
/ 09 марта 2012

В Zend Framework Actions являются методами в классе Controller и доступны через URL.Например, если ваш класс Controller называется «MathController» и он содержит действие «sixBySixAction», то вы бы инициировали это действие, перейдя к URL-адресу, который выглядит примерно так:

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

Обратите внимание, чтоимя метода действия - это верблюжий регистр в классе контроллера, но он разделен тире в URL.Это требование форматирования для Zend Framework.Также обратите внимание, что класс контроллера называется «MathController», но в URL нужно только указать «math».

Таким образом, вы можете использовать JavaScript, чтобы назначить обработчик onChange для поля выбора, которое просто перенаправляет наконкретный URL-адрес, который обрабатывает изменение путем доступа к определенному методу действия в определенном классе контроллера.

Для получения дополнительной информации об этом см. эту страницу в Справочном руководстве программиста Zend Framework.

Что касается части 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>
0 голосов
/ 09 марта 2012

измените свой 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
         }
           });
   }):

надеюсь, что это работает

...