PHP code example of josegonzalez / cakephp-version
1. Go to this page and download the library: Download josegonzalez/cakephp-version library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
josegonzalez / cakephp-version example snippets
Plugin::load('Josegonzalez/Version', ['bootstrap' => true]);
use Phinx\Migration\AbstractMigration;
class CreateVersions extends AbstractMigration
{
public function change()
{
$this->table('version')
->addColumn('version_id', 'integer', ['null' => true])
->addColumn('model', 'string')
->addColumn('foreign_key', 'integer')
->addColumn('field', 'string')
->addColumn('content', 'text', ['null' => true])
->addColumn('created', 'datetime')
->create();
}
}
use \Josegonzalez\Version\Model\Behavior\Version\VersionTrait;
class PostEntity extends Entity {
use VersionTrait;
}
public function initialize(array $config) {
$this->addBehavior('Josegonzalez/Version.Version');
}
// Will contain a generic `Entity` populated with data from the specified version.
$version = $entity->version(1);
$versions = $entity->versions();
use Cake\Event\Event;
use Cake\Event\EventListenerInterface;
class VersionListener implements EventListenerInterface {
public function implementedEvents() {
return array(
'Model.Version.beforeSave' => 'insertAdditionalData',
);
}
public function insertAdditionalData(Event $event) {
return [
'custom_field1' => 'foo',
'custom_field2' => 'bar'
];
}
}
use App\Event\VersionListener;
use Cake\Event\EventManager;
$VersionListener = new VersionListener();
EventManager::instance()->on($VersionListener);
/**
* @param \Cake\Event\Event $event
*
* @return array
*/
public function insertAdditionalData(Event $event)
{
$data = [
...
];
if ($event->data('_footprint')) {
$user = $event->data('_footprint');
$data += [
'user_id' => $user->id,
];
}
return $data;
}