WinterCMS创建带有表单验证的数据录入组件Component
前一篇已经介绍过在WinterCMS上创建组件component的方法,那一篇是非常简单的创建了一个数据列表的调用,这篇内容创建一个进阶版的component,实现前端实现表单的验证和数据保存。
文件结构
核心文件 awardForm.php
在components
目录下创建awardfForm.php
<?php namespace Julian\Library\Components;
use Cms\Classes\ComponentBase;
use Input;
use Validator;
use ValidationException;
use Redirect;
use Julian\Library\Models\Award;
use Flash;
class AwardForm extends ComponentBase{
public function componentDetails(){
return [
'name' => 'Award Form',
'description' => 'Enter Awards'
];
}
public function onSave(){
$validator = Validator::make(
//Data
[
'award_title' => Input::get('award_title')
],
//Rules
[
'award_title' => 'required|min:5'
]
);
if($validator->fails()){
//Flash::error('Award title at least 5 characters');
throw new ValidationException($validator);
}else{
$award = new Award();
$award->award_title = Input::get('award_title');
$award->slug = str_slug(Input::get('award_title'));
$award->save();
Flash::success('Award added!');
}
}
}
前端文件 /awardform/default.htm
在components
目录下创建/awardform/default.htm
<form data-request="onSave" data-request-validate data-request-flash>
<label>Award Title</label>
<input type="text" name="award_title">
<span data-validate-for="award_title"></span>
<button type="submit" data-attach-loading>Save Award</button>
</form>
注册Component
找到Plugin所在目录下的Plugin.php
文件,找到registerComponents()
,return[]
中添加
'Julian\Library\Components\AwardForm' => 'awardform'