CakePHP: создание выпадающего на homepge через проблему элемента - PullRequest
0 голосов
/ 08 августа 2011

Я пытаюсь создать функцию поиска на своей домашней странице, где пользователь может ограничить результаты поиска по стране.

Все это работает в моем контроллере записей / индексов, в результате чего список стран автоматически извлекается поиском ('list).

Однако на домашней странице раскрывающийся список стран остается пустым.Ниже приведен код: я пытаюсь получить раскрывающийся список с помощью requestAction (пожалуйста, опустите 'requestAction медленно из комментариев, спасибо)

homesearch.ctp ELEMENT:

<?php $this->requestAction('countries/getCountries');?>
<?php
echo $this->Form->create('Post', array(
    'url' => array_merge(array('controller' => 'posts','action' => 'index'), $this->params['pass'])
    ));
echo $this->Form->input('title', array('div' => false, 'empty' => true, 'label' => false)); 
echo $this->Form->input('country_id');
echo $this->Form->submit(__('Search', true), array('div' => false));
echo $this->Form->end();

?>

Функция getCountries в контроллере стран:

function getCountries(){
    $countries = $this->Country->find('list');
    $this->set(compact('countries'));
}

Прежде чем углубляться в альтернативы (loadmodule ('Country') в PagesController и т. Д.), Я думаю, что делаю что-то не так, данные не возвращаются изфункция requestAction как отладка научила меня.

Как вы, ребята, моете эту корову?Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

... (просьба опустить 'request. Действие медленно из комментариев, спасибо)

Для повышения производительности замените:

<?php $this->requestAction('countries/getCountries');?>

с:

<?php $this->viewVars['countries'] = ClassRegistry::init('Country')->find('list'); ?>

Этот подход не генерирует второй запрос.

0 голосов
/ 08 августа 2011
function getCountries(){
  $countries = $this->Country->find('list');
  if (!empty($this->params['requested'])) {
    return $countries;
  } else {
    $this->set(compact('countries'));
  }
}

и в элементе: <?php $countries = $this->requestAction('countries/getCountries');?>

человек, прямо в книге: http://book.cakephp.org/view/991/requestAction

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...