【问题标题】:I don't know how to implement a logic in symfony我不知道如何在 symfony 中实现逻辑
【发布时间】:2020-07-28 02:16:51
【问题描述】:

我在我的任务实体中添加了一个status,我会知道在将其发送到前面之前,哪个是设置此status 的逻辑的最佳方式。应该在TaskController。应该放在服务上?我不这么认为,但我不确定。我放了一个我想添加的逻辑示例来设置状态:

private function loadStatus(Task $task): string
    {
        $object = new \stdClass();

        $object->isDone = $task->isTaskDone();
        $object->isLate = date("Y-m-d") > $task->getDateStart();
        $object->isScheduled = date("Y-m-d") < $task->getDateStart() && !$task->isTaskDone();


        if ($object->isDone) {
                return 'task is done';
        }

        if ($object->isLate) {
            return 'task is late';
        }

        if ($object->isScheduled) {
            return 'task is scheduled'
        }
    }

感谢您的帮助。

【问题讨论】:

  • 哦,是的,谢谢,我忘了否定。在实体本身好的非常感谢你我会这样做
  • 你认为$object 应该是其他文件中的一个类而不是stdClass 吗?
  • 好的,但这是因为我有更多的逻辑,但是是的,我可以直接把所有这些东西放在 if yes
  • 哦,是的好多了,也感谢您的有趣阅读

标签: php symfony architecture


【解决方案1】:

您可以将逻辑放在实体本身中,作为附加方法;毕竟它是实体行为,遵循doctrine's best practices。

class Task 
{
    const STATE_DONE = 'done';
    // Other constants ommited

    public function isScheduled()
    {
        return date("Y-m-d") < $this->getDateStart() && !$this->isTaskDone();
    }

    public function getStatus()
    {
        if ($this->isTaskDone()) {
                return self::STATE_DONE;
        }
        // Rest ommited 
    }
}

然后您可以在模板中使用它们来生成描述,您可以在其中访问翻译器。

{{ task.status | trans }}

【讨论】:

  • 正是我想知道的,非常感谢
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2018-10-09
相关资源
最近更新 更多