Я добавил новое поле типа time в мою базу данных, так как мой контроллер уже запекся, я не хотел его запекать снова. Если я это сделаю, мои существующие изменения исчезнут. Я хочу, чтобы тип ввода формата времени, но когда я вижу его в передней части, он появляется в виде текстового поля. Ниже приведена моя сущность:
<?php
namespace App\Model\Entity;
use Cake\ORM\Entity;
/**
* BlackOutDay Entity
*
* @property int $id
* @property int|null $day
* @property int|null $topic_id
* @property \Cake\I18n\FrozenDate|null $date
* @property \Cake\I18n\FrozenTime|null $from_time
* @property \Cake\I18n\FrozenTime|null $to_time
* @property bool $full_day
*/
class BlackOutDay extends Entity
{
/**
* Fields that can be mass assigned using newEntity() or patchEntity().
*
* Note that when '*' is set to true, this allows all unspecified fields to
* be mass assigned. For security purposes, it is advised to set '*' to false
* (or remove it), and explicitly make individual fields accessible as needed.
*
* @var array
*/
protected $_accessible = [
'day' => true,
'topic_id' => true,
'date' => true,
'from_time' => true,
'to_time' => true,
'full_day' => true
];
}
Модель:
<?php
namespace App\Model\Table;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
/**
* BlackOutDays Model
*
* @method \App\Model\Entity\BlackOutDay get($primaryKey, $options = [])
* @method \App\Model\Entity\BlackOutDay newEntity($data = null, array $options = [])
* @method \App\Model\Entity\BlackOutDay[] newEntities(array $data, array $options = [])
* @method \App\Model\Entity\BlackOutDay|bool save(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\BlackOutDay saveOrFail(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\BlackOutDay patchEntity(\Cake\Datasource\EntityInterface $entity, array $data, array $options = [])
* @method \App\Model\Entity\BlackOutDay[] patchEntities($entities, array $data, array $options = [])
* @method \App\Model\Entity\BlackOutDay findOrCreate($search, callable $callback = null, $options = [])
*/
class BlackOutDaysTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('black_out_days');
$this->setDisplayField('id');
$this->setPrimaryKey('id');
}
/**
* Default validation rules.
*
* @param \Cake\Validation\Validator $validator Validator instance.
* @return \Cake\Validation\Validator
*/
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->allowEmptyString('id', 'create');
$validator
->integer('day')
->allowEmptyString('day');
$validator
->integer('topic_id')
->allowEmptyString('topic_id');
$validator
->date('date')
->allowEmptyDate('date');
$validator
->time('from_time')
->allowEmptyTime('from_time');
$validator
->time('to_time')
->allowEmptyTime('to_time');
$validator
->boolean('full_day')
->allowEmptyString('full_day');
return $validator;
}
}
Поскольку я добавил поле позже, я вручную добавил
$validator
->time('from_time')
->allowEmptyTime('from_time');
$validator
->time('to_time')
->allowEmptyTime('to_time');
И я инициализировалсобственность тоже.