CakePHP 3 Modeless Form Persistence - PullRequest
       12

CakePHP 3 Modeless Form Persistence

0 голосов
/ 14 мая 2018

Я создаю немодальную форму на основе приведенного примера здесь .Когда пользователь нажимает кнопку отправки, я извлекаю некоторую информацию из базы данных и отображаю ее в таблице под формой.Когда я нажимаю кнопку «Отправить», форма отображает значения по умолчанию для start и end каждый раз, что вызывает у некоторых пользователей путаницу при использовании страницы.

Есть ли способ получить FormHelper отображать значения, представленные конечным пользователем, а не значения по умолчанию?

src / Form / StartEndForm.php

namespace App\Form;

use Cake\Form\Form;

class StartEndForm extends Form{

    protected function _buildSchema(Schema $schema) {
        return $schema->addField('start', [
                'type' => 'date', 
                'default' => new Time('-1 month')
            ])
            ->addField('end', [
                'type' => 'date', 
                'default' => new Time()
            ]);
    }

    protected function _buildValidator(Validator $validator) {
        return $validator->add('start', 'date', [
                'rule' => ['date'], 
                'message' => 'Please provide a valid date'
            ])
            ->add('end', 'date', [
                'rule' => ['date'], 
                'message' => 'Please provide a valid date'
            ]);
    }

    protected function _execute(array $data) {
        //do some SQL stuff and return the value
    }
}

src / Template / Logs / index.ctp

echo $this->Form->create($form, [
    'class' => 'start-end-date', 
    'type' => 'get'
]);
echo $this->Form->input('start');
echo $this->Form->input('end');
echo $this->Form->submit('Submit');
echo $this->Form->end();

//If values were returned, create a table
foreach(....)....

1 Ответ

0 голосов
/ 15 мая 2018

Вы используете форму на основе GET, то есть значения формы отправляются через строку запроса, и по умолчанию помощник формы не учитывает строку запроса при поиске возможных данных для заполнения своих элементов управления, поэтомув итоге вы получите формы, заполненные схемами по умолчанию.

Вы можете включить поиск строки запроса (доступно с CakePHP 3.4):

echo $this->Form->create($article, [
    'class' => 'start-end-date', 
    'type' => 'get'
    'valueSources' => [
        'query', // < add this _before_ the default `context` source
        'context'
    ]
]);

, что сделает формуПомощник явно ищет данные запроса в текущем запросе, или вы можете переключиться на использование формы POST, которая автоматически подберет данные, так как данные POST по умолчанию проверяются во всех контекстах встроенной формы (Array, Entity, Form, Null), либо в качестве запасного варианта, либо в качестве основного источника.

См. Также

...