【问题标题】:Show search results on another view with CakePHP使用 CakePHP 在另一个视图上显示搜索结果
【发布时间】:2018-10-19 20:04:18
【问题描述】:

我现在正在使用 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>

【问题讨论】:

  • 有多种方法可以做到这一点。哪个最好取决于各种事情。您是否希望搜索表单在结果页面上仍然可见,例如进行优化或新搜索?您希望结果页成为人们可以收藏的内容吗?
  • 嗨!我现在拥有的结果屏幕有另一个输入来搜索新内容,因此无需保持搜索表单可见。流程将是这样的:用户进入搜索屏幕>​​输入数据>数据作为参数传输到结果,在第二个屏幕上>结果显示>如果用户有另一个搜索,屏幕有输入,所以同样递归地调用动作。希望我没有搞砸解释它。 xD

标签: php cakephp cakephp-3.0


【解决方案1】:

我会为搜索表单和结果使用相同的函数和模板。使用重定向消除整个if 部分,仅在有数据要搜索的情况下进行搜索,并更改视图以检查是否有要显示的结果。像这样的:

$data = $this->request->is('get') ? $this->request->getQueryParams() : $this->request->getData();
if (!empty($data)) {
    // Do your searches using $data here, set the results for the view
    $this->set('results', $results);
}

然后在您的模板中,您可以像显示的那样拥有它,但添加一个带有

的部分
if (isset($results)):
    // Display your search results here
endif;

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 嗨!感谢您的建议,甚至没有意识到错误!至于条件,我真的不知道该怎么做,因为 $data 变量总是为空。
    猜你喜欢
    • 2021-09-24
    • 2015-07-13
    • 2019-01-24
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多