protected $_columnViewNamespace = CubistBackpackServiceProvider::NAMESPACE . '::columns';
protected $_databaseType = 'string';
protected $_multiple = false;
+ protected $_allowNull=true;
public function getDefaultAttributes()
{
- return array_merge(parent::getDefaultAttributes(), ['options' => [], 'allows_null' => true, 'allows_multiple' => $this->_multiple]);
+ return array_merge(parent::getDefaultAttributes(), ['options' => [], 'allows_null' => $this->_allowNull, 'allows_multiple' => $this->_multiple]);
}
public function getColumnData()
public function onBeforeCreate($controller)
{
+ $this->useTemplate(request('template'));
parent::onBeforeCreate($controller);
}
public function onBeforeEdit($controller, $id)
{
+ $template = request('template');
+ // if the template in the GET parameter is missing, figure it out from the db
+ if ($template == false) {
+ $entry = self::findOrFail($id);
+ $template = $entry->template;
+ }
+ $this->useTemplate($template);
parent::onBeforeEdit($controller, $id);
}
public function onBeforeStore($controller, $request)
{
+ $this->useTemplate(\Request::input('template'));
parent::onBeforeStore($controller, $request);
}
public function onBeforeUpdate($controller, $request)
{
+ $this->useTemplate(\Request::input('template'));
parent::onBeforeUpdate($controller, $request);
}
/**
- * @param $template
+ * @param $template TemplateAbstract
* @throws \Exception
*/
protected function useTemplate($template)
{
if (is_string($template)) {
- $template = new $template();
+ $template = TemplateAbstract::getTemplateIntanceByName($template);
+ }
+ if (null === $template) {
+ return;
}
$fields = $template->getFields();
protected $_fields = [];
+ public function __construct()
+ {
+ $this->init();
+ }
+
public function init()
{
}
$e = explode('.', $file);
$classname = '\\App\\Templates\\' . $e[0];
- self::$_templates[$e[0]] = new $classname();
+ self::$_templates[Str::snake($e[0])] = new $classname();
}
if (!count(self::$_templates)) {
}
return self::$_templates;
}
+
+
+ /**
+ * @param $name
+ * @return TemplateAbstract|null
+ */
+ public static function getTemplateIntanceByName($name)
+ {
+ $name = Str::snake($name);
+ $list = self::getTemplates();
+ if (isset($list[$name])) {
+ return $list[$name];
+ }
+ return null;
+ }
}