首页 > 解决方案 > 使用 CakePHP 在另一个视图上显示搜索结果

问题描述

我现在正在使用 CakePHP,我需要使用一个视图进行搜索,然后将数据发送到同一控制器上的另一个操作,这将触发具有该搜索结果的另一个视图。问题是,在搜索屏幕上,还有一个表格显示了相同型号的一些数据,我相信这是一个大问题。所以现在,这就是我得到的:

public function busca() {
    $emergency = TableRegistry::get('EmergencySheets');
    $manufacturers = TableRegistry::get('Manufacturers');
    $data = $this->request->is('get') ? $this->request->query : $this->request->getData();
    $query = $emergency->find()
    ->select(['id', 'data_atualizacao_fabricante', 'tarja', 'manufacturer_id', 'nome_comercial'])
    ->where('EmergencySheets.data_atualizacao_fabricante')
    ->order(['data_atualizacao_fabricante'=>'DESC'])
    ->limit(7);
    $manufacturer_query = $manufacturers->find()
    ->select(['id','nome'])
    ->where($query->manufacturer_id = 'id');
    $manufacturer = $manufacturer_query->toArray();
    $sheets = $query->toArray();
    $this->set('manufacturers', $manufacturer);
    $this->set('sheets', $sheets);
    if($data){
        return $this->redirect(['action' => 'ficha' , $data]);
    }else{
        return $this->redirect(['action' => 'busca404']);
    }
}

我该如何处理?谢谢你们!

编辑:忘了提,但 $data 变量在表单上总是空的,即使我在表单输入中输入了一些东西。这也是视图代码!

<section class="search-section">
<div class="container px-0">
    <div class="search-wrapper">
        <div class="search-title">
            <h2><span>Quais produtos</span>você vai transportar?</h2>
            <p><span>Pesquise pelos produtos no campo de busca</span>
                ou clique nas letras ao lado.
            </p>
        </div>
        <div class="search-bar">
            <?=$this->Form->create()?>
                <div class="ml-5 bar">                        
                        <input type="text" placeholder="Procure várias fichas de uma só vez" class="formcontrol tip"
                            data-toggle="tooltip" data-placement="top">
                        <span class="removeClick"><i class="fas fa-times-circle fa-2x"></i></span>
                        <button type="submit" class="btn"><i class="fa fa-search fa-2x"></i></button>                        
                </div>
            <?=$this->Form->end()?>
            <div class="ml-5 alfabeto text-center">
                <button href="#A">A</button> <button href="#B">B</button> <button href="#C">C</button> <button href="#D">D</button>
                <button href="#E">E</button> <button href="#F">F</button> <button href="#G">G</button> <button href="#H">H</button>
                <button href="#I">I</button> <button href="#J">J</button> <button href="#K">K</button> <button href="#L">L</button>
                <button href="#M">M</button> <button href="#N">N</button> <button href="#O">O</button> <button href="#P">P</button>
                <button href="#Q">Q</button> <button href="#R">R</button> <button href="#S">S</button> <button href="#T">T</button>
                <button href="#U">U</button> <button href="#V">V</button> <button href="#W">W</button> <button href="#X">X</button>
                <button href="#Y">Y</button> <button href="#Z">Z</button><button href="#0-9">0-9</button>
            </div>
        </div>
    </div>
</div>

标签: phpcakephpcakephp-3.0

解决方案


请考虑您将代码放在以下行之后:

return $this->redirect(['action' => 'busca404']);
}

在这种情况下,所有这些行在任何情况下都不会执行,因为无论请求是否为“get”,您都在强制重定向。所以所有的代码都不会被执行。

我认为您需要定义重定向到“ficha”操作的条件以及哪些条件保留在“busca”操作中


推荐阅读