ZF2 — установка и получение параметров из маршрута

#php #zend-framework2

#php #zend-framework2

Вопрос:

У меня есть следующий маршрут в конфигурации моего модуля:

 /home[/:action][/:id][/:page][/:service][/:sort]
 

Когда я пытаюсь пропустить некоторые параметры, такие как страница и / или сервис, и просто передать переменную сортировки, она устанавливается как страница. Этот маршрут работает отлично:

home/index/1/1

и я получаю:

 action = index
page = 1
service = 1
 

но когда я пропускаю некоторые параметры и хочу только передавать действие и сортировать:

home/index /asc

Я получаю:

 action = index
page = asc
 

Я создаю свою ссылку следующим образом:

 $this->url(null, array('sort' => $sort), array(), true);
 

Есть ли какой-нибудь правильный способ сделать это правильно и так, как я хочу?

В ZF это было намного проще, потому что это был URL типа: index / sort / asc и т. Д. Ключ параметра и его значение. Возможно ли это достичь в ZF2?

Комментарии:

1. $this->url(‘name_of_your_route’, array(‘sort’ => $sort), array(), true);

2. @Chu Khanh Van: Нет. Последний параметр — true — задает имя маршрута.

3. На мой взгляд, рекомендуется всегда указывать имя маршрута, однако здесь проблема не в этом. Есть ли у вас какие-либо ограничения на параметры вашего маршрута в определении?

Ответ №1:

при использовании дополнительных параметров в маршруте они должны иметь имя или быть включены в другой дополнительный параметр :

 '/home[/:action[/id/:id][/page/:page][/service/:service][/sort/:sort]]'