46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php namespace RainLab\Builder\Classes;
|
|
|
|
use Backend\Classes\ControllerBehavior;
|
|
use Backend\Behaviors\FormController;
|
|
use ApplicationException;
|
|
|
|
/**
|
|
* Base class for index operation behaviors
|
|
*
|
|
* @package rainlab\builder
|
|
* @author Alexey Bobkov, Samuel Georges
|
|
*/
|
|
abstract class IndexOperationsBehaviorBase extends ControllerBehavior
|
|
{
|
|
protected $baseFormConfigFile = null;
|
|
|
|
protected function makeBaseFormWidget($modelCode, $options = [])
|
|
{
|
|
if (!strlen($this->baseFormConfigFile)) {
|
|
throw new ApplicationException(sprintf('Base form configuration file is not specified for %s behavior', get_class($this)));
|
|
}
|
|
|
|
$widgetConfig = $this->makeConfig($this->baseFormConfigFile);
|
|
|
|
$widgetConfig->model = $this->loadOrCreateBaseModel($modelCode, $options);
|
|
$widgetConfig->alias = 'form_'.md5(get_class($this)).uniqid();
|
|
|
|
$form = $this->makeWidget('Backend\Widgets\Form', $widgetConfig);
|
|
$form->context = strlen($modelCode) ? FormController::CONTEXT_UPDATE : FormController::CONTEXT_CREATE;
|
|
|
|
return $form;
|
|
}
|
|
|
|
protected function getPluginCode()
|
|
{
|
|
$vector = $this->controller->getBuilderActivePluginVector();
|
|
|
|
if (!$vector) {
|
|
throw new ApplicationException('Cannot determine the currently active plugin.');
|
|
}
|
|
|
|
return $vector->pluginCodeObj;
|
|
}
|
|
|
|
abstract protected function loadOrCreateBaseModel($modelCode, $options = []);
|
|
} |