当前位置: 首页 > 知识库问答 >
问题:

在TYPO3 v10上从我的控制器保存系统类别

王季萌
2023-03-14

我有一个理想模型和一个理想控制者。

我的模型的一个属性是类别(在db上有适当的列),我想在这个列中保存系统类别的uid。(后端表单没有问题)

我已经为前端用户创建了一个带有类别的想法的前端表单。此表单将一个ideaModel对象发送到我的ideaController

但是当我做$this-

是因为我的ideaModel属性是一个int,它应该是一个类别类型变量吗?或者对象存储?
我一直在尝试,但我不知道如何处理对象存储?我还不太了解打字错误。如果你知道问题是什么,或者对此有一个有用的指南,我将不胜感激。

理想模型。php

<?php

namespace Edu\EduIdeas\Domain\Model;

use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;

class Idea extends AbstractEntity
{
    /**
     * title
     * 
     * @var string
     */
    protected $title = '';

    /**
     * description
     * 
     * @var string
     */
    protected $description = '';

    /**
     * category
     * 
     * @var int
     */
    protected $category = '';

    /**
     * status
     * 
     * @var int
     */
    protected $status = '';

    /**
     * user
     * 
     * @var int
     */
    protected $user = '';

    /**
     * likes
     * 
     * @var int
     */
    protected $likes = '';

    /**
     * Sets the title
     * 
     * @param string $title
     * @return void
     */
    public function setTitle(string $title): void
    {
        $this->title = $title;
    }

    /**
     * Returns the title
     * 
     * @return string $title
     */
    public function getTitle(): string
    {
        return $this->title;
    }

    /**
     * Sets the description
     * 
     * @param string $description
     * @return void
     */
    public function setDescription(string $description): void
    {
        $this->description = $description;
    }

    /**
     * Returns the description
     * 
     * @return string $description
     */
    public function getDescription(): string
    {
        return $this->description;
    }

    /**
     * Sets the category
     * 
     * @param int $category
     * @return void
     */
    public function setCategory(int $category): void
    {
        $this->category = $category;
    }

    /**
     * Returns the category
     * 
     * @return int $category
     */
    public function getCategory(): int
    {
        return $this->category;
    }
    
    /**
     * Sets the status
     * 
     * @param int $status
     */
    public function setStatus(int $status): void
    {
        $this->status = $status;
    }

    /**
     * Returns the status
     * 
     * @return int $status
     */
    public function getStatus(): int
    {
        return $this->status;
    }

    /**
     * Sets the user
     * 
     * @param int $user
     */
    public function setUser(int $user): void
    {
        $this->user = $user;
    }

    /**
     * Returns the user
     * 
     * @return int $user
     */
    public function getUser(): int
    {
        return $this->user;
    }

    /**
     * Sets the likes
     * 
     * @param int $likes
     */
    public function setLikes(int $likes): void
    {
        $this->likes = $likes;
    }

    /**
     * Returns the likes
     * 
     * @return int $likes
     */
    public function getLikes(): int
    {
        return $this->likes;
    }
}

思想控制者。php

<?php

namespace Edu\EduIdeas\Controller;

use TYPO3\CMS\Extbase\Annotation as Extbase;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use Edu\EduIdeas\Domain\Model\Idea;
use Edu\EduIdeas\Domain\Repository\IdeaRepository;
/***
 * For the full copyright and license information, please read the
 * LICENSE.txt file that was distributed with this source code.
 *
 *  (c) 2019 
 *
 ***/
/**
 * IdeasController
 */
class IdeasController extends ActionController
{
    /**
     * Inject the idea repository
     *
     * @param Edu\EduIdeas\Domain\Repository\IdeaRepository $ideaRepository
     */
    private $ideaRepository;

    public function injectIdeaRepository(IdeaRepository $ideaRepository)
    {
        $this->ideaRepository = $ideaRepository;
    }

    /**
     * action list
     * 
     * @return string An HTML with a list of posted aideas
     */
    public function listAction()
    {
        $ideas = $this->ideaRepository->findAll();
        $this->view->assign('ideas', $ideas);
    }
    /**
     * @param \Edu\EduIdeas\Domain\Model\Idea $idea The new Idea object
     * @return string An HTML form for creating a new idea
     * @Extbase\IgnoreValidation("newIdea")
     */
    public function newAction(Idea $newIdea = null)
    {
        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
        $categories = $queryBuilder->select('title', 'uid')->from('sys_category')->where($queryBuilder->expr()->eq('parent', $queryBuilder->createNamedParameter(7)))
        ->execute()->fetchAll();
        $this->view->assign('newIdea', $newIdea);
        $this->view->assign('categories', $categories);
    }
    /**
     * Creates a new Idea
     *
     * @param Idea $idea The idea to save on db
     * @return void
     */
    public function createAction(Idea $idea)
    {
        // TODO access protection
        $idea->setStatus(1);
        $idea->setUser($GLOBALS['TSFE']->fe_user->user['uid']);
        $this->ideaRepository->add($idea);
        $this->redirect('list');
    }
}
'category' => [
            'label' => 'LLL:EXT:hebo_ideas/Resources/Private/Language/locallang_db.xlf:hk_ideas_idea.category',
            'config' => [
                'type' => 'select',
                'renderType' => 'selectTree',
                'treeConfig' => [
                    'parentField' => 'parent',
                    'rootUid' => 7,
                    'appearance' => [
                        'showHeader' => false,
                        'expandAll' => true,
                    ],
                ],
                'foreign_table' => 'sys_category',
                'foreign_table_where' => ' AND (sys_category.sys_language_uid = 0 OR sys_category.l10n_parent = 0) ORDER BY sys_category.sorting',
                'size' => 10,
                'minitems' => 0,
                'maxitems' => 1,
            ]
         ],

PD:它是一个int


共有1个答案

段阳夏
2023-03-14

该错误表示您正试图将空字符串插入整数列。如何求解取决于表的结构。如果该列可为空,请将默认值设置为null

protected $category = null;

或者,如果列具有其他默认值,例如0,则可以将其设置为该值。否则,您应该在插入之前显式地提供一个有效的整数值:

$idea->setCategory($categoryId);
$this->ideaRepository->add($idea);
 类似资料:
  • 问题内容: 我在版本控制系统中保留了重要的设置,例如开发和生产服务器的主机名和端口。但是我知道,将秘密(例如私钥和数据库密码)保存在VCS存储库中是一种不好的做法。 但是密码-像其他设置一样-似乎应该进行版本控制。那么保持密码版本控制的正确方法是什么? 我想这将涉及保持秘密,在自己的“秘密设置”文件,并有该文件的加密和版本控制。但是什么技术呢?以及如何正确执行此操作?有没有更好的方法可以完全解决这

  • 我不熟悉Mac系统。我想在Mac终端上使用命令导航到java jdk目录。类似于windows命令行上的。 我尝试了来获得路径,但要找到路径是一个挑战 $(/usr/libexec/java_home) /Library/Java/JavaVirtualMachines/jdk-12.0.1。jdk/目录/家庭系统名称:$

  • 问题内容: 如果我的数据是关系型的(出版商-作者-书,协会-团队-玩家),我们可以使用像HBase或MongoDB这样的NoSQL系统来存储数据吗? (我知道这听起来像是一个愚蠢的问题,但我只是在学习:)) 问题答案: 是的,您可以在NoSQL数据存储中存储任何类型的数据。您描述的信息种类对于NoSQL应该是足够的。 但是,请注意,在典型的NoSQL解决方案中,您将交易SQL数据库中某些理所当然的

  • 我正在制作一个游戏,这里我希望最终用户按下Ctrl W退出系统。 这是我使用的代码: ……但它似乎不起作用 有人能告诉我我的代码有什么问题吗? 提前谢谢!

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/debug/system_console.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e PX4 System Console(系统控制台) System Console(系统控制台)允许访问系统底层

  • 角色控制器 第一人称或第三人称游戏中的角色通常需要一些基于碰撞的物理特性,以使它不会穿过地板掉落下去或穿过墙壁。角色的加速度和运动通常不是物理真实的,它可以立即加速、制动和改变方向,而不会收到动量的影响。 在 3D 物理中,这种类型的行为可以使用 角色控制器 创建。这个组件给角色提供了简单的胶囊碰撞器,并且总是直立向上。控制器有着自己的特殊功能,可以用来设置对象的速度和方向,与真正的碰撞器不同的是