小编gvi*_*iew的帖子

Symfony 2 - 我应该在哪里放一个实用工具?

我正在创建一个具有一个公共方法的类,它返回一个由参数索引的值.我目前只有一个捆绑.我目前拥有的包中的目录是:

/Controller
/DataFixtures
/DependencyInjection
/Document
/Entity
/Resources
/Tests
Run Code Online (Sandbox Code Playgroud)

放置像这样的类的惯例是什么?

php symfony

17
推荐指数
2
解决办法
1万
查看次数

您应该如何验证密码设置器的输入?

我一直在寻找我的Symfony2验证选项.问题是这样的:

我有一个在setPassword方法中哈希密码的Member类:

public function setPassword($password)
{
    $this->password = Encrypt::cryptPassword($password);
}
Run Code Online (Sandbox Code Playgroud)

散列是一个长字符串,无论原始输入如何都存在.

出于这个原因,这样的验证是无用的:

 * @Assert\NotBlank()
 * @Assert\Length(
 *      min = "8",
 *      max = "15",
 *      minMessage = "Your password must be at least {{ limit }} characters",
 *      maxMessage = "Your password cannot be longer than {{ limit }} characters"
 * ) 
Run Code Online (Sandbox Code Playgroud)

触发验证是因为无论输入的有效性如何都会创建哈希字符串.

我看了尝试getter验证,但这似乎也是一个死路一条,因为我真正想要验证的是setPassword()的原始输入,并且在setPassword创建了一个hash值之后得到了hash值很有帮助.

推荐的方法是什么,它与现有的Validation组件一起使用,可以让我验证原始用户输入?

更新

虽然我接受了答案,但它并不可行.它确实让我专注于生命周期回调系统,这可能是解决方案的一部分.

根据当前的建议,一旦第一次对密码进行编码,每次尝试编辑实体时都会超过验证,因为散列密码当然不是输入,也不能解密为原始输入.

我现在正在试验实体中的单独属性,纯粹是为了输入密码,以及使用验证组来触发在某些情况下使用验证(新用户创建/密码更改),而在其他情况下省略它案例.我计划使用prePersist和preUpdate回调来进行密码编码.

仅供记录,这是在提供REST API的应用程序中使用,以及管理工具和所选功能的Web前端.

php validation symfony

2
推荐指数
1
解决办法
645
查看次数

用于存储计划/cron 作业的数据库结构?

我遇到了一个问题。在应用程序的数据库中,我有一个schedule表,用于存储用户提供的时间表。例如

  • 日常的
  • 每周
  • 每周两次
  • 每周的第 3(或任何用户选择的)天
  • 每个月
  • 一个月两次
  • 每个月的 x 天
  • 每年 x 个月

等等。然后,这些时间表将提供参考点来安排不同的任务或确定它们的重复性。

我想不出合适的数据库结构。我能得到的最好的是有一个包含以下列的表格:

  • 星期
  • 类型

然后将指定的时间表存储在相关列中并提供类型。例如,每周可以像周列中的 1 和 1(重复整个的指定值)或类似的东西。

这种方法的问题是这个表将被非常频繁地使用,并且检索到的数据不会很简单。需要计算才能知道计划类型,因此需要复杂的数据库查询来获取每种类型的计划。

如果可以提供任何其他方法,我将在 Laravel 应用程序中实现它。这是一个 SAAS 应用程序,其中包含与日程表相关的大量数据。

任何帮助将不胜感激。谢谢

mysql database database-design scheduler laravel

2
推荐指数
1
解决办法
4692
查看次数

查找未出现在数组中的最小正整数

我正在尝试解决 leetcode 类型问题,这是一个练习问题,伴随着我需要为工作做的即将进行的代码测试,但我遇到了麻烦。谁能帮助我了解出了什么问题?

\n

我本质上是在寻找暴力选项,因为我不知道 algos/DS。

\n
                                                       PROBLEM:\n
Run Code Online (Sandbox Code Playgroud)\n

写一个函数:

\n

函数解(A);

\n

给定一个包含 N 个整数的数组 A,返回 A 中未出现的最小正整数(大于 0)。

\n

例如,给定 A = [1, 3, 6, 4, 1, 2],该函数应返回 5。

\n

给定 A = [1, 2, 3],该函数应返回 4。

\n

给定 A = [\xe2\x88\x921, \xe2\x88\x923],该函数应返回 1。

\n

为以下假设编写一个有效的算法:

\n

N 是 [1..100,000] 范围内的整数;\n数组 A 的每个元素都是 [\xe2\x88\x921,000,000..1,000,000] 范围内的整数。

\n
                            HERE IS MY SOLUTION: \n\nfunction solution(A) {\n    let newArray = A.sort(function(a, b){return a-b})\n        let lowestNumber = 1\n        for(i=0; i < newArray.length; i++) …
Run Code Online (Sandbox Code Playgroud)

javascript arrays for-loop

2
推荐指数
1
解决办法
6827
查看次数