additionsl property at list
This commit is contained in:
parent
921569b950
commit
e7a20d9b97
@ -8,6 +8,7 @@ use itguild\forms\builders\TextInputBuilder;
|
|||||||
use itguild\forms\inputs\Select;
|
use itguild\forms\inputs\Select;
|
||||||
use kernel\app_modules\tag\models\Tag;
|
use kernel\app_modules\tag\models\Tag;
|
||||||
use kernel\app_modules\tag\models\TagEntity;
|
use kernel\app_modules\tag\models\TagEntity;
|
||||||
|
use kernel\app_modules\tag\services\TagEntityService;
|
||||||
use kernel\helpers\Debug;
|
use kernel\helpers\Debug;
|
||||||
use kernel\helpers\Slug;
|
use kernel\helpers\Slug;
|
||||||
use kernel\Module;
|
use kernel\Module;
|
||||||
@ -61,14 +62,8 @@ class TagModule extends Module
|
|||||||
|
|
||||||
public function formInputs(string $entity, Model $model = null): void
|
public function formInputs(string $entity, Model $model = null): void
|
||||||
{
|
{
|
||||||
if (isset($model)) {
|
if (isset($model->id)) {
|
||||||
$tags= TagEntity::where("entity_id", $model->id)->get()->toArray();
|
$value = TagEntityService::getTagsByEntity($entity, $model->id);
|
||||||
$value = [];
|
|
||||||
foreach ($tags as $tag) {
|
|
||||||
$val = Tag::where('id', $tag['tag_id'])->first()->toArray();
|
|
||||||
$value[] = $val['label'];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
$input = SelectBuilder::build("tag[]", [
|
$input = SelectBuilder::build("tag[]", [
|
||||||
'class' => 'form-control',
|
'class' => 'form-control',
|
||||||
@ -107,6 +102,17 @@ class TagModule extends Module
|
|||||||
return substr($tagsStr, 0, -2);
|
return substr($tagsStr, 0, -2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getItem(string $entity, string $entity_id): string
|
||||||
|
{
|
||||||
|
$tags = TagEntity::where("entity", $entity)->where("entity_id", $entity_id)->get();
|
||||||
|
$tagsStr = "";
|
||||||
|
foreach ($tags as $tag) {
|
||||||
|
$tagsStr .= $tag->tag->label . ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
return substr($tagsStr, 0, -2);
|
||||||
|
}
|
||||||
|
|
||||||
public function deleteItems(string $entity, Model $model): void
|
public function deleteItems(string $entity, Model $model): void
|
||||||
{
|
{
|
||||||
TagEntity::where("entity", $entity)->where("entity_id", $model->id)->delete();
|
TagEntity::where("entity", $entity)->where("entity_id", $model->id)->delete();
|
||||||
|
@ -78,7 +78,7 @@ class EntityRelation
|
|||||||
$entity_relations_info = Option::where("key", "entity_relations")->first();
|
$entity_relations_info = Option::where("key", "entity_relations")->first();
|
||||||
if ($entity_relations_info) {
|
if ($entity_relations_info) {
|
||||||
$entity_relations = json_decode($entity_relations_info->value, true);
|
$entity_relations = json_decode($entity_relations_info->value, true);
|
||||||
foreach ($entity_relations as $entity => $entity_relation){
|
foreach ($entity_relations as $entity => $entity_relation) {
|
||||||
if (in_array($property, $entity_relation)) {
|
if (in_array($property, $entity_relation)) {
|
||||||
$index = array_search($property, $entity_relation);
|
$index = array_search($property, $entity_relation);
|
||||||
unset($entity_relations[$entity][$index]);
|
unset($entity_relations[$entity][$index]);
|
||||||
@ -113,7 +113,7 @@ class EntityRelation
|
|||||||
{
|
{
|
||||||
$entityRelations = $this->getEntitiesRelations();
|
$entityRelations = $this->getEntitiesRelations();
|
||||||
if ($entityRelations) {
|
if ($entityRelations) {
|
||||||
if (isset($entityRelations[$slug])){
|
if (isset($entityRelations[$slug])) {
|
||||||
return $entityRelations[$slug];
|
return $entityRelations[$slug];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -161,8 +161,8 @@ class EntityRelation
|
|||||||
public function renderEntityAdditionalPropertyFormBySlug(string $entity, Model $model = null): void
|
public function renderEntityAdditionalPropertyFormBySlug(string $entity, Model $model = null): void
|
||||||
{
|
{
|
||||||
$relations = $this->getEntityRelationsBySlug($entity);
|
$relations = $this->getEntityRelationsBySlug($entity);
|
||||||
if ($relations){
|
if ($relations) {
|
||||||
foreach ($relations as $relation){
|
foreach ($relations as $relation) {
|
||||||
$this->renderFormInputsBySlug($entity, $relation, $model);
|
$this->renderFormInputsBySlug($entity, $relation, $model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -179,8 +179,8 @@ class EntityRelation
|
|||||||
public function saveEntityRelation(string $entity, Model $model, Request $request): void
|
public function saveEntityRelation(string $entity, Model $model, Request $request): void
|
||||||
{
|
{
|
||||||
$relations = $this->getEntityRelationsBySlug($entity);
|
$relations = $this->getEntityRelationsBySlug($entity);
|
||||||
if ($relations){
|
if ($relations) {
|
||||||
foreach ($relations as $relation){
|
foreach ($relations as $relation) {
|
||||||
$this->saveEntityRelationBySlug($relation, $entity, $model, $request);
|
$this->saveEntityRelationBySlug($relation, $entity, $model, $request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,9 +189,9 @@ class EntityRelation
|
|||||||
public function getEntityAdditionalProperty(string $entity, Model $model): array
|
public function getEntityAdditionalProperty(string $entity, Model $model): array
|
||||||
{
|
{
|
||||||
$relations = $this->getEntityRelationsBySlug($entity);
|
$relations = $this->getEntityRelationsBySlug($entity);
|
||||||
if ($relations){
|
if ($relations) {
|
||||||
$relationsArr = [];
|
$relationsArr = [];
|
||||||
foreach ($relations as $relation){
|
foreach ($relations as $relation) {
|
||||||
$moduleClass = $this->getAdditionalPropertyClassBySlug($relation);
|
$moduleClass = $this->getAdditionalPropertyClassBySlug($relation);
|
||||||
if ($moduleClass and method_exists($moduleClass, "getItems")) {
|
if ($moduleClass and method_exists($moduleClass, "getItems")) {
|
||||||
$relationsArr[$relation] = $moduleClass->getItems($entity, $model);
|
$relationsArr[$relation] = $moduleClass->getItems($entity, $model);
|
||||||
@ -204,6 +204,16 @@ class EntityRelation
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAdditionalPropertyByEntityId(string $entity, string $entity_id, string $additionalPropertySlug): string
|
||||||
|
{
|
||||||
|
$moduleClass = $this->getAdditionalPropertyClassBySlug($additionalPropertySlug);
|
||||||
|
if ($moduleClass and method_exists($moduleClass, "getItem")) {
|
||||||
|
return $moduleClass->getItem($entity, $entity_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public function deleteEntityRelationBySlug(string $slug, string $entity, Model $model): void
|
public function deleteEntityRelationBySlug(string $slug, string $entity, Model $model): void
|
||||||
{
|
{
|
||||||
$moduleClass = $this->getAdditionalPropertyClassBySlug($slug);
|
$moduleClass = $this->getAdditionalPropertyClassBySlug($slug);
|
||||||
@ -215,8 +225,8 @@ class EntityRelation
|
|||||||
public function deleteEntityRelation(string $entity, Model $model): void
|
public function deleteEntityRelation(string $entity, Model $model): void
|
||||||
{
|
{
|
||||||
$relations = $this->getEntityRelationsBySlug($entity);
|
$relations = $this->getEntityRelationsBySlug($entity);
|
||||||
if ($relations){
|
if ($relations) {
|
||||||
foreach ($relations as $relation){
|
foreach ($relations as $relation) {
|
||||||
$this->deleteEntityRelationBySlug($relation, $entity, $model);
|
$this->deleteEntityRelationBySlug($relation, $entity, $model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ namespace kernel\app_modules\tag\services;
|
|||||||
use kernel\app_modules\tag\models\Tag;
|
use kernel\app_modules\tag\models\Tag;
|
||||||
use kernel\app_modules\tag\models\TagEntity;
|
use kernel\app_modules\tag\models\TagEntity;
|
||||||
use kernel\FormModel;
|
use kernel\FormModel;
|
||||||
|
use kernel\helpers\Debug;
|
||||||
use kernel\helpers\Slug;
|
use kernel\helpers\Slug;
|
||||||
|
|
||||||
class TagEntityService
|
class TagEntityService
|
||||||
@ -36,4 +37,15 @@ class TagEntityService
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getTagsByEntity(string $entity, int $entity_id): array
|
||||||
|
{
|
||||||
|
$tags= TagEntity::where("entity_id", $entity_id)->where("entity", $entity)->get();
|
||||||
|
$value = [];
|
||||||
|
foreach ($tags as $tag) {
|
||||||
|
$value[$tag->id] = $tag->tag->label;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -24,6 +24,16 @@ $table = new ListEloquentTable(new EloquentDataProvider(Post::class, [
|
|||||||
'params' => ["class" => "table table-bordered", "border" => "2"],
|
'params' => ["class" => "table table-bordered", "border" => "2"],
|
||||||
'baseUrl' => "/admin/post"
|
'baseUrl' => "/admin/post"
|
||||||
]));
|
]));
|
||||||
|
|
||||||
|
$entityRelation = new \kernel\EntityRelation();
|
||||||
|
$additionals = $entityRelation->getEntityRelationsBySlug("post");
|
||||||
|
|
||||||
|
foreach ($additionals as $additional) {
|
||||||
|
$table->addColumn($additional, $additional, function ($id) use ($entityRelation, $additional) {
|
||||||
|
return $entityRelation->getAdditionalPropertyByEntityId("post", $id, $additional);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$table->columns([
|
$table->columns([
|
||||||
'created_at' => function ($data) {
|
'created_at' => function ($data) {
|
||||||
if (!$data){
|
if (!$data){
|
||||||
|
Loading…
Reference in New Issue
Block a user