Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OctoberCMS builder-大规模创建模型_Php_Octobercms_Octobercms Builder - Fatal编程技术网

Php OctoberCMS builder-大规模创建模型

Php OctoberCMS builder-大规模创建模型,php,octobercms,octobercms-builder,Php,Octobercms,Octobercms Builder,因此,我有一个通过octoberCMS builder创建的许可证模型,其中包含列表和表单视图 许可证模型包含一个与学校模型的关系 在表单视图下有一个包含学校的下拉列表和一个输入字段(type=number),用于定义要为所选学校创建的许可证数量 默认行为仅创建一个许可证 如何创建输入的许可证数量?您需要覆盖默认行为 注意:此任务要求具备OctoberCMS的编程知识 在控制器中,需要添加此方法 使用Flash; 使用后端; // ... 公共函数create_onSave($context=

因此,我有一个通过octoberCMS builder创建的许可证模型,其中包含列表和表单视图

许可证模型包含一个与学校模型的关系

在表单视图下有一个包含学校的下拉列表和一个输入字段(type=number),用于定义要为所选学校创建的许可证数量

默认行为仅创建一个许可证


如何创建输入的许可证数量?

您需要覆盖默认行为

注意:此任务要求具备OctoberCMS的编程知识

在控制器中,需要添加此方法

使用Flash;
使用后端;
// ...
公共函数create_onSave($context=null)
{
//1.初始化模态的表单并从中获取输入数据
$model=$this->asExtension('FormController')->formCreateModelObject();
$model=$this->asExtension('FormController')->formExtendModel($model)?:$model;
$this->asExtension('FormController')->initForm($model);
$form=$this->asExtension('FormController')->formGetWidget();
$data=$form->getSaveData();
//2.在这里获得正确的计数字段,并将其转换为int以进行循环
$count=intval($data['license_to_create']);
//3.验证步骤
//如果($validationFailed){
//Flash::error(‘出了点问题’);
//返回;
// }
//4.环路
foreach($i=1;$i school\u id=$data['school\u id'];
$licenseModel->save();
}
//5.成功信息
Flash::成功($count.'License Added');
//6.只需将其重定向到所需位置
返回后端::重定向('/hardiksatasiya/sotest/skills');
}
解释

  • 在这里,我们初始化所需的变量,这样我们就可以得到填充在文本框中的数据,这是默认代码,所以我只是从核心代码复制了它

  • 一旦我们有了$data变量,我们就可以访问填充的数据,我们使用
    $data['license\u to\u create']
    在您的案例中是100,并且
    $data['school\u id']
    您需要为哪个学校创建许可, 注意:您可能有不同的字段,请相应更改。

  • 验证步骤*可选,您可以在此处添加一些检查,并在出现错误消息时停止流程

  • 循环为许可证模式创建新记录,[默认代码将仅创建1条记录],但这里我们基于给定的计数
    $data['license\u to\u create'].

  • 只是普通的成功信息

  • 重定向到我们需要重定向的位置通常您需要将其重定向到
    /作者姓名/插件名称/许可证控制器
    注意:您可能有不同的url,请相应更改。


  • 如果您有任何疑问,请添加评论。

    事实上,我已经通过为许可证控制器编写一个自定义的create\u onSave函数解决了这个问题:

    public function create_onSave(){
    
        $quantity = post('License[_quantity]');
        $school_id = post('License[school]');
    
        for($i = 1; $i <= $quantity; $i++){
            # Create License
            $license = new \Acme\Plugin\Models\License();
            $license->school_id = $school_id;
            $license->save();
        }
    
        \Flash::success('Added '.$quantity.' Licenses');
    
    }
    
    public函数create_onSave(){
    $quantity=post('License[_quantity');
    $school_id=post(许可证[学校]);
    对于($i=1;$i school\u id=$school\u id;
    $license->save();
    }
    \Flash::success('Added'.$quantity.'Licenses');
    }