Php OctoberCMS builder-大规模创建模型
因此,我有一个通过octoberCMS builder创建的许可证模型,其中包含列表和表单视图 许可证模型包含一个与学校模型的关系 在表单视图下有一个包含学校的下拉列表和一个输入字段(type=number),用于定义要为所选学校创建的许可证数量 默认行为仅创建一个许可证Php OctoberCMS builder-大规模创建模型,php,octobercms,octobercms-builder,Php,Octobercms,Octobercms Builder,因此,我有一个通过octoberCMS builder创建的许可证模型,其中包含列表和表单视图 许可证模型包含一个与学校模型的关系 在表单视图下有一个包含学校的下拉列表和一个输入字段(type=number),用于定义要为所选学校创建的许可证数量 默认行为仅创建一个许可证 如何创建输入的许可证数量?您需要覆盖默认行为 注意:此任务要求具备OctoberCMS的编程知识 在控制器中,需要添加此方法 使用Flash; 使用后端; // ... 公共函数create_onSave($context=
如何创建输入的许可证数量?您需要覆盖默认行为 注意:此任务要求具备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['license\u to\u create']
在您的案例中是100,并且$data['school\u id']
您需要为哪个学校创建许可,
注意:您可能有不同的字段,请相应更改。$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');
}