0

我需要按钮上的“onclick”操作,所以我被重定向到这样的事情:

 location/[textfield_data]

我正在使用cakephp,此时我到达的最近的是这个。

echo $this->Form->input('link', array('label' => false, "class" => "form-control input-medium", "placeholder" => __('Procurar')));

echo $this->Form->button('', array('class' => 'btn btn-primary icon-search icon-white' ,'onclick' => "location.href='/'"));

使用我的代码,cakephp 正在检索我:

/[view]?data%5Blink%5D=

[视图] 是我所在的当前页面。

找到解决方案

我以这种方式找到了解决方案。

echo $this->Form->input('link', array('label' => false, "class" => " form-control input-medium", "placeholder" => __('Procurar'), 'id' => 'search'));

echo $this->Form->button(null, array('class' => 'btn btn-primary icon-search icon-white' ,'onclick' => "location.href='/mywantedurl/'+document.getElementById('search').value;"));

请注意,我没有使用任何 form->create 或 form->end,否则它将不起作用。

4

2 回答 2

1

为什么需要使用 JavaScript?只需使用该GET方法即可。您应该以任何方式使用GET而不是POST请求搜索,因此可以为请求添加书签等。

您可以使用$this->request->query而不是$this->request->data.

<?php
// app/View/Locations/index.ctp
echo $this->Form->create('Location', array('type' => 'get'));
echo $this->Form->input('Location.keywords');
echo $this->Form->end('Search');

然后在您相应的控制器中:

<?php
// app/Controller/LocationsController.php
class LocationsController extends AppController {

    public function search() {
        if (!isset($this->request->query['keywords'])) {
            throw new BadRequestException();
        }

        $results = $this->Location->findByKeywords($this->request->query['keywords']);

        $this->set('results', $results);
    }
}

我不知道您的数据库表或模型名称的实际架构,但以上内容应该为您指明正确的方向。

于 2013-11-15T11:17:40.150 回答
0

我使用这样的代码

echo $this->Form->input('link', array('label' => false, "class" => "form-control input-medium", "placeholder" => __('Procurar'), 'id' => 'search-field'));
echo $this->Form->button('', array('class' => 'btn btn-primary icon-search icon-white' , 'id' => 'search-button'));
$this->Js->get('#search-button');
$this->Js->event('click', 'edit()');

$this->Js->buffer
(
    "function edit()
    {
        search_term = this.document.getElementById('search-field').value;
        if(search_term)
            window.location = \"/index.php/location/\" + search_term;
        return false;
    }"
);
于 2013-11-15T11:12:37.673 回答