CakePHP:通过元素问题在homepge上创建一个下拉列表

时间:2011-08-08 05:24:19

标签: cakephp

我尝试在我的主页上创建搜索功能,用户可以按国家/地区限制搜索结果。

这一切都适用于我的帖子/索引控制器,通过查找('列表)自动检索国家/地区列表。

但是,在主页上,国家/地区下拉列表仍为空。下面是一些代码:  我尝试使用requestAction检索下拉列表(请忽略'requestAction从评论中缓慢,谢谢)

homesearch.ctp元素:

<?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();

&GT?;

国家控制器中的getCountries函数:

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

在深入探讨替代方案(在PagesController等中的loadmodule('Country'))之前,我认为我做错了什么,没有数据从requestAction函数流回来,就像调试教我一样。

你们怎么洗这头牛?谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

...(请在评论中省略'requestAction缓慢,谢谢)

为了提高性能,请替换:

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

使用:

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

此方法不会生成第二个请求。