Cakephp 3.6: получить данные из формы - странный обходной путь - PullRequest
0 голосов
/ 30 октября 2018

Я хочу реализовать форму поиска, так что я сделал это до сих пор:

index.ctp * * 1004

    <?php
    $base_url = array('controller' => 'Customers', 'action' => 'index');
    echo $this->Form->create('Filter',array('url' => $base_url, 'class' => 'filter'));
    // Add a basic search 
    echo $this->Form->input('search', array('label' => false, 'placeholder' => "Name or surname..."));

    echo $this->Form->submit("Search");

    echo $this->Form->end();
    ?>

CustomersController.php

public function index()
    {

        $conditions = array();

        debug($this->request->getData()); //form field is not passed
        debug($this->request->getData('search')); //form field is not passed
        $conditions['OR'] = array(
            array('Customers.name LIKE' => '%' . $this->request->getData('search') . '%'),
            array('Customers.surname LIKE' => '%' . $this->request->getData('search') . '%')
        );

        $this->Customers->recursive = 0;
        $this->paginate = array(
            'limit' => 8,
            'conditions' => $conditions
        );
        $this->set('customers', $this->paginate()); 

    }

Но значение поля поиска не передается в controller. Что не так?

EDIT

Что-то не так с кодом CustomersController.php, потому что если заменить $base_url в index.ctp на другой контроллер, тогда я смогу получить данные правильно

НО ЭТО РАБОТАЕТ

index.ctp

<div class="Search">
        <?php
        // The base url is the url where we'll pass the filter parameters
        $base_url = array('controller' => 'ExpiringServices', 'action' => 'index');
        echo $this->Form->create('Filter',array('url' => $base_url, 'class' => 'filter'));
        // Add a basic search 
        echo $this->Form->control('search', array('label' => false, 'placeholder' => "Name or surname..."));

        echo $this->Form->submit("Search");

        echo $this->Form->end();
        ?>
    </div>

ExpiringServicesController.php

public function index()
{

    $conn = ConnectionManager::get('default');


    debug($this->request->getData('search'));
    //.....
}

НОВОЕ РЕДАКТИРОВАНИЕ (ВРЕМЕННОЕ РЕШЕНИЕ)

Странно, если я изменюсь:

$base_url = array('controller' => 'Customers', 'action' => 'index');

К

$base_url = array('controller' => 'Customers', 'action' => 'index',123);

Это работает! но почему ???

...