CakePHP3无模式表单持久性
我正在基于给出的示例创建一个无模式表单。用户单击submit按钮后,我从数据库中检索一些信息,并将其显示在表单下方的表中。当我单击submit按钮时,表单每次都会显示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{
开始
和结束
的默认值,这会导致使用该页面的用户产生一些混乱
有没有办法让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'
]
]);