как иметь нормальную форму действий, чтобы следовать Zend Custom маршрутизации? - PullRequest
0 голосов
/ 05 октября 2010

Я взял Zend Framework и играл с ним, и вот ситуация, которую я хотел бы достичь.
у меня есть default и user modules, пользователь имеет другой макет user_layout, который я загружаю в predispatch из NovelsController пользовательских модулей. от и до) показать действие NovelsController.

вот код

<!-- the form inside user_layout -->
<form method="get" action="/user/novels/show">
   <table class="font">
      <tr>
          <td> <label for="to">From:</label></td>
          <td class="simple_margin_left"><input type="text" id="from" name="from" size="12"/></td>
      </tr>
      <tr>
         <td> <label for="to">To:</label></td>
         <td class="simple_margin_left"><input type="text" id="to" name="to" size="12" /></td>
      </tr>
      <tr>
         <td> </td>
         <td></td>
      </tr>
      <tr>

          <td colspan="2" align="center"><button type="submit" style="padding-left:10px; padding-right:10px; margin-left:0px" class="classy">Check</button> </td>
      </tr>
   </table>

</form>

Я использую следующее для

$input = new Zend_Filter_Input($filters, $validators);
$input->setData($this->getRequest()->getPost());

Пока все работает нормально. Теперь я хочу включить нумерацию страниц в show.phtml.so. Я изменяю действие формы, чтобы получить и определить маршрут в моем application.ini, например, так:

resources.router.routes.user-show.route = /user/novels/show/:page/:from/:to
resources.router.routes.user-show.defaults.controller = novels
resources.router.routes.user-show.defaults.module = user
resources.router.routes.user-show.defaults.action = show
resources.router.routes.user-show.defaults.page = 1
resources.router.routes.user-show.defaults.from = ""
resources.router.routes.user-show.defaults.to = ""

как я могу заставить действие формы следовать этому правилу, потому что до сих пор это просто обычная строка запроса с вопросительным знаком и переменной = значением.

Как мне этого добиться? Спасибо, что прочитали.

1 Ответ

1 голос
/ 06 октября 2010

Это невозможно сделать с помощью ZF (и не стоит этого делать) из-за работы браузера.

При отправке формы GET на любом языке браузер создает строку запроса в виде пар ключ-значение и добавляет ее к URL-адресу, указанному в действии.

Если вы настаиваете, чтобы все URL были «красивыми», у вас есть несколько вариантов:

  • написать код для перенаправления на форматированный адрес
  • использовать правила перезаписи для перенаправления (Apache mod_rewrite)
  • использовать JavaScript для захвата метода onsubmit формы (не будет работать для пользователей без JavaScript)
...