namespace Cubist\Backpack\app\Magic\Controllers;
use Backpack\CRUD\app\Http\Controllers\CrudController;
-use Cubist\Backpack\app\Magic\CubistCrud;
+use Backpack\CRUD\CrudTrait;
+use Cubist\Backpack\app\Magic\Fields\Field;
use Cubist\Backpack\app\Magic\Models\CubistMagicModelAbstract;
use Cubist\Backpack\app\Magic\Requests\CubistMagicStoreRequest;
use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest;
class CubistMagicController extends CrudController
{
- use CubistCrud;
+ use CrudTrait;
protected $_modelNamespace;
protected $_routeURL;
protected $_singular;
protected $_plural;
- protected $_fields = [];
protected $_storeRequest;
protected $_updateRequest;
| CrudPanel Configuration
|--------------------------------------------------------------------------
*/
-
- foreach ($this->_fields as $field) {
+ foreach ($this->getModelInstance()->getFields() as $field) {
$this->addField($field);
}
}
+ public function addField($field)
+ {
+ if (is_array($field)) {
+ $field = Field::getInstance($field);
+ }
+ /** @var $field Field */
+ if ($field->isDisplayColumn()) {
+ $this->crud->addColumn($field->getColumnData());
+ }
+ $this->crud->addField($field->getDefinition(), $field->getCRUDForm());
+ }
+
/**
* @return CubistMagicModelAbstract
*/
+++ /dev/null
-<?php
-
-
-namespace Cubist\Backpack\app\Magic;
-
-use Backpack\CRUD\CrudTrait;
-use Cubist\Backpack\app\Magic\Fields\Field;
-
-trait CubistCrud
-{
- use CrudTrait;
-
- /**
- * @param $field Field|array
- * @throws \Exception
- */
- public function addField($field)
- {
- if (is_array($field)) {
- $field = Field::getInstance($field);
- }
- /** @var $field Field */
- if ($field->isDisplayColumn()) {
- $this->crud->addColumn($field->getColumnData());
- }
- $this->crud->addField($field->getDefinition(), $field->getCRUDForm());
- }
-}
public $timestamps = true;
+ protected $_slugFields = ['slug', 'title', 'name'];
+
public function __construct(array $attributes = [])
{
$this->setFields();
{
return [
'slug' => [
- 'source' => 'slug_or_name_or_title',
+ 'source' => 'slug_or_title',
],
];
}
+ // The slug is created automatically from the "title" field if no slug exists.
+ public function getSlugOrTitleAttribute()
+ {
+
+ foreach ($this->_slugFields as $item) {
+ if (isset($this->$item) && $this->item != '') {
+ return $this->$item;
+ }
+ }
+ }
+
public function getOption($key, $default = null)
{
if (isset($this->_options[$key])) {
'ROUTEURL' => $this->getOption('name'),
'SINGULAR' => $this->getOption('singular', $this->getOption('name')),
'PLURAL' => $this->getOption('plural', ''),
- 'MODELNAMESPACE' => get_class($this),
- 'FIELDS' => var_export($this->getFieldsDefinitions(), true)
+ 'MODELNAMESPACE' => get_class($this)
];
$res = file_get_contents($stub);
file_put_contents($dest, $res);
}
- public function getFieldsDefinitions()
- {
- $res = [];
- foreach ($this->_fields as $name => $field) {
- $res[] = $field->getDefinition();
- }
- return $res;
- }
-
-
public function getStudlyName()
{
return Str::studly($this->getOption('name'));
protected $_routeURL = '_ROUTEURL_';
protected $_singular = '_SINGULAR_';
protected $_plural = '_PLURAL_';
- protected $_fields = _FIELDS_;
}