File: D:/HostingSpaces/brameda/brameda.nl/app/Komma/Kms/Core/Entities/DisplayNameTrait.php
<?php
namespace App\Komma\Kms\Core\Entities;
use App\Komma\Kms\Core\AbstractTranslatableModel;
use Illuminate\Support\Str;
trait DisplayNameTrait
{
/**
* Get the name of this model by model or translation model
*
* @return null|string
*/
public function getDisplayName():?string
{
// If it is a new model the section name will filled by model.section.new
if(!$this->exists) return null;
// First try to get the name of the model
// if(isset($this->name) && $this->name != '') { //When you do an isset like this, you cannot use a magic method like in orders to set and return the name of a model
if(isset($this->name) && $this->name != '') {
return $this->name;
}
// Else detect if the model is a translatableModel
elseif(is_a($this, AbstractTranslatableModel::class)){
if(isset($this->translations) && $this->translations->count() != 0) $modelTranslation = $this->translations->first();
if(isset($modelTranslation) && isset($modelTranslation->name) && $modelTranslation->name != '')
return $modelTranslation->name;
}
return null;
}
/**
* @return string
*/
public function getSidebarName():string
{
// If there is no name defined generate a generic name
if(!$sidebarName = $this->getDisplayName()){
$translationKey = Str::camel($this->getTable()).'.entity';
$translation = __('shop/'.$translationKey);
if($translation !== 'shop/'.$translationKey) $sidebarName = $translation;
else $sidebarName = __('kms/'.$translationKey);
$sidebarName .= ' '.$this->id;
}
return $sidebarName;
}
}