Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP3无模式表单持久性_Php_Cakephp_Cakephp 3.x - Fatal编程技术网

CakePHP3无模式表单持久性

CakePHP3无模式表单持久性,php,cakephp,cakephp-3.x,Php,Cakephp,Cakephp 3.x,我正在基于给出的示例创建一个无模式表单。用户单击submit按钮后,我从数据库中检索一些信息,并将其显示在表单下方的表中。当我单击submit按钮时,表单每次都会显示开始和结束的默认值,这会导致使用该页面的用户产生一些混乱 有没有办法让FormHelper显示最终用户提交的值而不是默认值 src/Form/StartEndForm.php namespace App\Form; use Cake\Form\Form; class StartEndForm extends Form{

我正在基于给出的示例创建一个无模式表单。用户单击submit按钮后,我从数据库中检索一些信息,并将其显示在表单下方的表中。当我单击submit按钮时,表单每次都会显示
开始
结束
的默认值,这会导致使用该页面的用户产生一些混乱

有没有办法让
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(....)....

您使用的是基于
GET
的表单,即表单值是通过查询字符串发送的,默认情况下,表单帮助器在查找可能的数据以填充其控件时不考虑查询字符串,因此最终将使用架构默认值填充表单

您可以启用查询字符串查找(从CakePHP 3.4开始提供):

echo$this->Form->create$article[
“类”=>“开始-结束日期”,
'键入'=>'获取'
“valueSources”=>[
“query”,在默认的“context”源之前添加此
“上下文”
]
]);
这将使表单助手在当前请求中显式查找查询数据,或者您可以切换到使用
POST
表单,该表单将自动拾取数据,因为默认情况下,所有内置表单上下文都会查找
POST
数据(
Array
Entity
form
Null
),作为备用,或作为主要来源

另见


您使用的是基于
GET
的表单,即表单值是通过查询字符串发送的,默认情况下,表单帮助器在查找可能的数据以填充其控件时不考虑查询字符串,因此最终将使用模式默认值填充表单

您可以启用查询字符串查找(从CakePHP 3.4开始提供):

echo$this->Form->create$article[
“类”=>“开始-结束日期”,
'键入'=>'获取'
“valueSources”=>[
“query”,在默认的“context”源之前添加此
“上下文”
]
]);
这将使表单助手在当前请求中显式查找查询数据,或者您可以切换到使用
POST
表单,该表单将自动拾取数据,因为默认情况下,所有内置表单上下文都会查找
POST
数据(
Array
Entity
form
Null
),作为备用,或作为主要来源

另见


这就成功了。非常感谢您的解释和食谱的链接!这就成功了。非常感谢您的解释和食谱的链接!
echo $this->Form->create($article, [
    'class' => 'start-end-date', 
    'type' => 'get'
    'valueSources' => [
        'query', // < add this _before_ the default `context` source
        'context'
    ]
]);