Предположим, у вас есть форма со следующими полями.
Name: XYZ
Number :077777777
**save** button.
Имеет действие редактирования / обновления формы
Случай 1: Пользователь вносит изменения и сохраняет форму. Случай 2: Пользователь не вносит никаких изменений и сохраняет форму.
В любом случае вам следует вызвать функцию редактирования (или обновления) вашего контроллера.Ваши поля ИМЯ И НОМЕР будут доступны в вашем контроллере и доступны через метод $ this-> request-> getData ().В идеале вам понадобятся два поля для отметок времени, как показано ниже: «CREATED_ON» и «UPDATED_ON»
, вы можете использовать сенсорный метод, как вы упомянули, но в идеальном мире будет лучше написать поведение для вашей модели.он будет обновлять отметку времени каждый раз, когда вы создаете новую запись или вносите изменения / сохраняете ее.
<?php
namespace App\Model\Behavior;
use Cake\ORM\Behavior\TimestampBehavior;
/**
* Modify built in CakePHP's Timestamp class's default config so no configuration is necessary for use in this project.
*/
final class CustomTimestampBehavior extends TimestampBehavior
{
/**
* Default config
*
* These are merged with user-provided config when the behavior is used.
*
* events - an event-name keyed array of which fields to update, and when, for a given event
* possible values for when a field will be updated are "always", "new" or "existing", to set
* the field value always, only when a new record or only when an existing record.
*
* refreshTimestamp - if true (the default) the timestamp used will be the current time when
* the code is executed, to set to an explicit date time value - set refreshTimetamp to false
* and call setTimestamp() on the behavior class before use.
*
* @var array
*/
protected $_defaultConfig = [
'implementedFinders' => [],
'implementedMethods' => [
'timestamp' => 'timestamp',
'touch' => 'touch',
],
'events' => [
'Model.beforeSave' => [
'CREATED_ON' => 'new',
'UPDATED_ON' => 'existing',
]
],
'refreshTimestamp' => true
];
}
и вызываете ее из таблицы модели.Примерно так:
public function initialize(array $config)
{
parent::initialize($config);
$this
->addBehavior('CustomTimestamp');
Таким образом, вам не нужно каждый раз вызывать $ this-> model-> touch ($ data) вручную.Поведение позаботится об этом всякий раз, когда оно создает или сохраняет.
Ссылка: https://api.cakephp.org/3.0/class-Cake.ORM.Behavior.TimestampBehavior.html