找到一个别人写的gridview小部件http://demos.krajee.com/grid-demo?page=2&per-page=10#configure
点击电话号码就进行修改,并验证必填,但是提交到editmobile这个action并进行验证
[
'class'=>'kartik\grid\EditableColumn',
'attribute'=>'mobile',
'pageSummary'=>'Total',
'vAlign'=>'middle',
'width'=>'210px',
'readonly'=>function($model, $key, $index, $widget) {
return (!$model->mobile)?$model->mobile:null;
},
'editableOptions' => [
'inputType' => \kartik\editable\Editable::INPUT_TEXT,
'formOptions' => [
'action' => 'editmobile',
],
// 'placement' => 'left',//设置弹出框的位置
]
],
因为actionEditMobile绑定了editmobile场景,在editmobile场景下mobile才是必填项,而这个组件的验证场景是default,所以没有提示错误。
我们得在提交到editmobile时做一下处理。
我看了一下这个组件的代码,找到class EditableColumnAction 的 function validateEditable()
发现返回的数据都是
return ['output' => $value, 'message' => $message];
这下知道怎么写了吧
public function actionEditMobile()
{
$post=Yii::$app->request->post();
$id=!empty($post['editableKey'])?$post['editableKey']:false;
if(!$t_id){
$Info=Info::find()->where(['id'=>$id])->one();
$Info->setScenario('editmobile');
$value["Info"] = $post['Info'][$post['editableIndex']];
$Info->load($value);
if(!$Info->save()){
echo json_encode(["output"=>"","message"=> array_values($Info->getFirstErrors())[0]]);
exit;
}
}
}
更改之后提示手机号不能为空
备注:因为我的同事zacklee使用这个组件时遇到了这个问题,求助到我,所以我把解决的方法发上来
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。