File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Products/Product/ProductTranslationModelService.php
<?php declare(strict_types=1);
namespace App\Products\Product;
use Komma\KMS\Globalization\Languages\Models\Language;
use Komma\KMS\Core\AbstractTranslatableModel;
use Komma\KMS\Core\Attributes\Attribute;
use Komma\KMS\Core\TranslationService;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
class ProductTranslationModelService extends TranslationService
{
public function __construct()
{
$this->setModelClassName(ProductTranslation::class);
}
public function save(Model $model, Collection $attributes = null): Model
{
if($attributes === null) return $model;
$model = parent::save($model, $attributes);
$this->checkContainsAttributes($attributes);
if(!is_a($model, AbstractTranslatableModel::class)) return $model; //Only handle abstractTranslatable models. Since only those can have translations.
/** @var $model AbstractTranslatableModel */
$attributes->each(function(Attribute $attribute) use(&$model) {
$reference = $attribute->getsValueFromReference();
if($reference == "meta_title") {
/** @var Language $language */
$language = $attribute->getAssociatedLanguage();
$translation = $this->getTranslationModelForModelByLanguage($model, $language);
$translation->slug = Str::slug($attribute->getValue());
}
});
return $model;
}
}