Я работаю над формой поиска, в которой я хотел бы разместить искомые значения в URL. У меня проблемы с получением URL, чтобы включить параметры, однако. Они будут публиковаться, если я введу значения в представлении (если вместо $ this-> search_zip я наберу ‘12345’). В настоящее время поиск работает как нужно, кроме URL. В настоящее время я получаю условия поиска из формы. Нужно ли менять настройки контроллера, чтобы получить их из URL-адреса? Если это так, как бы я отфильтровать?
В конечном счете я хотел бы, чтобы мой URL читал:
Результаты / 12345 / otherparam
Я сейчас получаю
Результаты
Независимо от того, какие переменные я ввожу в форму.
Модуль Конфиг
return array(
'router' => array(
'routes' => array(
'home' => array(
'type' => 'segment',
'options' => array(
'route' => '/',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
'may_terminate' => true, //START OF CHILD ROUTES
'child_routes' => array(
'results' => array(
'type' => 'segment',
'options' => array(
'route' => 'results[/:search_zip][/:search_industry]',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'results',
Просмотр результатов
$form->setAttribute('action', $this->url(
'home/results',
array(
'action' => 'results',
'search_zip'=> $this->search_zip,
'search_industry' => 'industry_name'
echo $this->formRow($form->get('industry_name'));//this is the form field
echo $this->formSubmit($form->get('submit'));
контроллер
//beginning of the results action
$request = $this->getRequest();
$form = new SearchForm($dbAdapter);
if ($request->isPost()) {
$search = new MainSearch();
$form->setInputFilter($search->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
По окончании действия результатов я возвращаю форму и результаты (по примеру альбома)
return array(
'form' => $form,
'pros' => $fetchPros,
);
Спасибо,
M
//This will give you an array containing your desired parameters
$params = $this->params()->fromRoute();
//Then you can simply use them like this
$search_zip = $params['search_zip'];
$search_industry = $params['search_industry'];
Других решений пока нет …