<?php namespace Nextend\Framework\Form; use Nextend\Framework\Data\Data; use Nextend\Framework\Form\Fieldset\FieldsetHidden; use Nextend\Framework\Pattern\MVCHelperTrait; class Form extends Data { use MVCHelperTrait; protected static $counter = 1; /** @var Base\PlatformFormBase */ private static $platformForm; protected $id; /** * @var Data */ protected $context; protected $controlName = ''; /** * @var ContainerMain */ protected $container; protected $classes = array( 'n2_form' ); /** * Form constructor. * * @param MVCHelperTrait $MVCHelper * @param string $controlName */ public function __construct($MVCHelper, $controlName) { $this->id = 'n2_form_' . self::$counter++; $this->controlName = $controlName; $this->setMVCHelper($MVCHelper); $this->context = new Data(); parent::__construct(); $this->container = new ContainerMain($this); } /** * @return ContainerMain */ public function getContainer() { return $this->container; } public function getId() { return $this->id; } /** * @return Data */ public function getContext() { return $this->context; } /** * @param $path * * @return ContainerInterface|AbstractField */ public function getElement($path) { /** * Remove starting / path separator */ return $this->container->getElement(substr($path, 1)); } public function render() { echo '<div class="' . esc_attr(implode(' ', $this->classes)) . '">'; $this->container->renderContainer(); echo '</div>'; } /** * @return string */ public function getControlName() { return $this->controlName; } public static function init() { self::$platformForm = new WordPress\PlatformForm(); } public static function tokenize() { return self::$platformForm->tokenize(); } public static function tokenizeUrl() { return self::$platformForm->tokenizeUrl(); } public static function checkToken() { return self::$platformForm->checkToken(); } /** * @return FieldsetHidden */ public function getFieldsetHidden() { return $this->container->getFieldsetHidden(); } public function setDark() { $this->classes[] = 'n2_form--dark'; } public function addClass($className) { $this->classes[] = $className; } } Form::init();