秀小川
use yii\validators\Validator; class SettingValidator extends Validator { protected $ErrorMsg = '主键重复!!'; /** * * 服务端验证 * * @param \yii\base\Model $model * @param string $attribute */ public function validateAttribute($model, $attribute) { $exist = Setting::find()->where([$attribute=>$model->key])->one(); if($exist) { $this->addError($model, $attribute, $this->ErrorMsg); } } /** * * 客户端验证 * * @param \yii\base\Model $model * @param string $attribute * @param \yii\web\View $view * @return null|string */ public function clientValidateAttribute($model, $attribute, $view) { $message = $this->ErrorMsg; return <<<JS messages.push('{$message}'); JS; }
$model->key
key 是你的主键字段!
使用:(模型验证规则里引入)
{ return [ [['name'], SettingValidator::className(),'message'=>1111], ]; }```
这也是个好方法! 比我那个科学!
- 秀小川 2017-11-27 已签到连续签到2天,获得了10个金钱
- 秀小川 2017-11-26 已签到连续签到1天,获得了5个金钱
- 秀小川 2017-11-23 已签到连续签到5天,获得了20个金钱
- 秀小川 2017-11-22 已签到连续签到4天,获得了20个金钱
- 秀小川 回答了问题 Activeform checkbox 一个问题
类似于这种效果的选择框
这是效果图:
代码:<?php $form = zActiveForm::begin([ 'action' => ['index'], 'method' => 'get', 'options' => ['data-pjax' => 'pjax-list'], 'enableClientValidation' => false ]); ?> <div class="dis_search"> <div class="form-inline search_first"> <?= $form->field($model, 'date_type')->dropDownList(searchOrderMain::$date_type_array)->label(null, ['Yii' => 'normal'])->error(false) ?> <?= $form->field($model, 'date_from', ['options' => ['class' => 'input-group date form_date']])->textInput(['unit' => '<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>'])->label(false)->error(false) ?> -- <?= $form->field($model, 'date_to', ['options' => ['class' => 'input-group date form_date']])->textInput(['unit' => '<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>'])->label(false)->error(false) ?> <?= $form->field($model, 'hotel_name')->textInput(['placeHolder' => '酒店名称'])->label('酒店名称', ['Yii' => 'normal'])->error(false) ?> <?= $form->field($model, 'channel_id')->dropDownList(ArrayHelper::map($model_list, 'ID', 'SUPPLIER_NAME'), ['prompt' => '请选择', 'class' => 'form-control select_screen', 'style' => 'width:172px;'])->label('销售渠道', ['Yii' => 'normal'])->error(false) ?> </div> <div class="form-inline search_second"> <?= $form->field($model, 'diret_flag')->dropDownList([0 => '请选择', 556 => '直连订单', 557 => '非直连订单'])->label('订单类型', ['Yii' => 'normal'])->error(false) ?> <?= $form->field($model, 'confirm_num')->dropDownList([0 => '请选择', 1 => '有', 2 => '无'])->label('确认号', ['Yii' => 'normal'])->error(false) ?> <?= $form->field($model, 'search_key')->textInput(['placeHolder' => '订单号/渠道订单号/客人姓名/客人电话', 'style' => 'width:250px;'])->label('更多查询', ['Yii' => 'normal'])->error(false) ?> <?= $form->field($model, 'ORDER_STATUS')->hiddenInput()->label(false)->error(false) ?> <?= $form->field($model, 'CHANNEL_ORDER_STATUS')->hiddenInput()->label(false)->error(false) ?> <div class="form-group search_button"> <?= Html::submitButton('<span class="glyphicon glyphicon-search"></span> 查询', ['class' => 'btn btn-primary left-20 loading-form', 'id' => 'search-button', 'onclick' => 'loading()']) ?> <?= Html::button('<span class="glyphicon glyphicon-save"></span> 导出订单', ['class' => 'btn btn-primary ', 'onclick' => 'z.exportExcel(\'form\', \'/hotel/ordermain/export\')']) ?> </div> </div> </div> <?php zActiveForm::end(); ?>
这是我的项目里面的,没时间整理,提交的时候就会提交到你渲染这个页面的那个控制器了,当然你也可以自定义,类似于这样:
<?php $form = zActiveForm::begin(['action' => '/hotel/hotel-room/set-bed-type', 'options' => ['class' => 'form-horizontal', 'data-pjax' => true]]); ?>
@Steven0T 谢谢你的回复
我想的是另外一个效果, 看下我问题补冲我现在用了rule验证来解决
['username', 'unique', 'targetClass' => 'rbac\models\User', 'message' => '用户名已存在.']