PhalconPHP:多次重复字段收集并保存到多个模型

PhalconPHP: Repeating field collection multiple times and saving to multiple models

我正在创建一个包含多个子表单的表单。让我详细说明一下:我正在为大学里的 class 创建一个表格。 class 的模型中有多个内容,例如 "name"、"size" 等。但是,我需要将学生附加到 class。学生的模型中只有两个字段:"name" 和 "type"

我需要能够从一个表单中控制所有这些。所以通常在 PHP 中,字段的名称类似于:

'name'
'size'
'student[name][]'
'student[type][]'
'student[name][]'
'student[type][]'

这会将所有学生的信息收集到数组中,以后可以访问这些信息。在那种形式下,我还需要动态添加学生字段的数量,但我想这可以用 javascript.

来完成

我的问题是:我如何在 Phalcon 中控制这种行为?我可以使用构建器创建这样的字段吗?我可以指示它这些字段是无止境的,即没有特定数量的学生吗?我可以使用验证器验证所有学生的姓名吗?

模型到准备好的数据

1) 在您的 class 模型中,定义与学生模型的关系。

class Class extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasMany('id', 'AppName\Models\Student', 'class_id', array(
           'alias' => 'students'
        ));
    }
}

2) 在您的 class 控制器中实例化 class 模型并引用别名 "students".

$class = new Class::findFirst($classId);
$students = $class->students;

$response = array(
    'class' => $class->toArray(),
    'students' => $students->toArray()
);

如果您决定不使用 Javascript 并在 Phalcon 中创建整个表单,请查看 Phalcon/Forms

将 POST 数据保存回模型

看看this example

验证

This article 很有帮助。