فهرست منبع

add controllers for each model to keep things simple

ksieren 2 سال پیش
والد
کامیت
fd7c25300d

+ 23 - 0
Classes/Controller/CategoryController.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Meramo\Begriffmgt\Controller;
+
+use Meramo\Begriffmgt\Domain\Model\Category;
+use Meramo\Begriffmgt\Domain\Repository\CategoryRepository;
+use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
+use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
+
+class CategoryController extends ActionController
+{
+    public function __construct(CategoryRepository $categoryRepository) {
+        $this->categoryRepository = $categoryRepository;
+    }
+
+    public function createAction(string $title) {
+        $category = new Category();
+        $category->setTitle($title);
+        $this->categoryRepository->add($category);
+        $this->objectManager->get(PersistenceManager::class)->persistAll();
+        return $category->getUid();
+    }
+}

+ 22 - 24
Classes/Controller/DashboardController.php

@@ -4,23 +4,34 @@ declare(strict_types=1);
 
 namespace Meramo\Begriffmgt\Controller;
 
-
-use Meramo\Begriffmgt\Domain\Model\Category;
+use Meramo\Begriffmgt\Domain\Repository\TypeRepository;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use Meramo\Begriffmgt\Domain\Repository\TermRepository;
-use Meramo\Begriffmgt\Domain\Model\Term;
 use Meramo\Begriffmgt\Domain\Repository\CategoryRepository;
-use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
-
 
 class DashboardController extends ActionController
 {
     protected $termRepository;
+    protected $termController;
     protected $categoryRepository;
+    protected $categoryController;
+    protected $typeRepository;
+    protected $typeController;
 
-    public function __construct(TermRepository $termRepository, CategoryRepository $categoryRepository) {
+    public function __construct(
+        TermRepository $termRepository,
+        CategoryRepository $categoryRepository,
+        CategoryController $categoryController,
+        TypeRepository $typeRepository,
+        TypeController $typeController,
+        TermController $termController
+    ) {
         $this->termRepository = $termRepository;
         $this->categoryRepository = $categoryRepository;
+        $this->categoryController = $categoryController;
+        $this->termController = $termController;
+        $this->typeRepository = $typeRepository;
+        $this->typeController = $typeController;
     }
 
     public function indexAction(): void
@@ -41,26 +52,13 @@ class DashboardController extends ActionController
         $this->view->assign('terms', $terms);
     }
 
-    public function createAction(string $termList, string $categoryTitle): void {
+    public function createAction(string $termList, string $categoryTitle, string $typeTitle): void {
         $terms = array_map('trim', explode(',', $termList));
-        $category = $this->createCategoryAction($categoryTitle);
-
+        $category = $this->categoryController->createAction($categoryTitle);
         $categoryObj = $this->categoryRepository->findByUid($category);
-        foreach ($terms as $term) {
-            $termObj = new Term();
-            $termObj->setTerm($term);
-            $termObj->setCategory($categoryObj);
-            $this->termRepository->add($termObj);
-        }
+        $type = $this->typeController->createAction($typeTitle);
+        $typeObj = $this->typeRepository->findByUid($type);
+        $this->termController->createAction($terms, $categoryObj, $typeObj);
         $this->redirect('index');
     }
-
-    public function createCategoryAction(string $title) {
-        $category = new Category();
-        $category->setTitle($title);
-        $this->categoryRepository->add($category);
-        $this->objectManager->get(PersistenceManager::class)->persistAll();
-        return $category->getUid();
-    }
-
 }

+ 25 - 0
Classes/Controller/TermController.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace Meramo\Begriffmgt\Controller;
+use Meramo\Begriffmgt\Domain\Model\Term;
+use Meramo\Begriffmgt\Domain\Repository\TermRepository;
+use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
+
+class TermController extends ActionController
+{
+    public function __construct(
+        TermRepository $termRepository
+    ) {
+        $this->termRepository = $termRepository;
+    }
+
+    public function createAction($terms, $categoryObj, $typeObj): void {
+        foreach ($terms as $term) {
+            $termObj = new Term();
+            $termObj->setTerm($term);
+            $termObj->setCategory($categoryObj);
+            $termObj->setType($typeObj);
+            $this->termRepository->add($termObj);
+        }
+    }
+}

+ 23 - 0
Classes/Controller/TypeController.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Meramo\Begriffmgt\Controller;
+
+use Meramo\Begriffmgt\Domain\Model\Type;
+use Meramo\Begriffmgt\Domain\Repository\TypeRepository;
+use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
+use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
+
+class TypeController extends ActionController
+{
+    public function __construct(TypeRepository $typeRepository) {
+        $this->typeRepository = $typeRepository;
+    }
+
+    public function createAction(string $title) {
+        $type = new Type();
+        $type->setTitle($title);
+        $this->typeRepository->add($type);
+        $this->objectManager->get(PersistenceManager::class)->persistAll();
+        return $type->getUid();
+    }
+}

+ 20 - 1
Resources/Private/Templates/Dashboard/Index.html

@@ -18,6 +18,8 @@
     <label for="categoryTitle">Category:</label>
     <f:form.textfield name="categoryTitle" /><br>
 <!--    <f:form.select name="category" options="{categories}" optionValueField="uid" optionLabelField="title" /><br>-->
+    <label for="typeTitle">Type:</label>
+    <f:form.textfield name="typeTitle" /><br>
     <f:form.submit value="Save" />
   </f:form>
 
@@ -40,6 +42,23 @@
     </tbody>
   </table>
 
+  <h2>List of types</h2>
+  <table>
+    <thead>
+    <tr>
+      <th>ID</th>
+      <th>Title</th>
+    </tr>
+    </thead>
+    <tbody>
+    <f:for each="{types}" as="type">
+      <tr>
+        <td>{type.uid}</td>
+        <td>{type.title}</td>
+      </tr>
+    </f:for>
+    </tbody>
+  </table>
 
   <h2>List of terms</h2>
   <table>
@@ -55,7 +74,7 @@
     <f:for each="{terms}" as="term">
       <tr>
         <td>{term.uid}</td>
-        <td>{term.type}</td>
+        <td>{term.type.title}</td>
         <td>{term.category.title}</td>
         <td>{term.term}</td>
       </tr>