在yii2中使用模态创建表单输入不验证

bweufnob  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(215)

控制器

public function actionCreate() {
    $model = new Ceremonia();
  if ($this->request->isPost) {
     if ($model->load($this->request->post()) && $model->save()){ Yii::$app->getSession()->setFlash('info',[' Nombre <strong>insertado</strong> correctamente!!!']); return $this->redirect(['index']); 
   }}else{ $model->loadDefaultValues();}
  if(Yii::$app->request->isAjax) { 
    return $this->renderAjax('create',['model' => $model]); }else{ return $this->render('create',['model' => $model]); 
   }
 }

项目中的索引文件:索引

<?= Html::button('<i class="fas fa-plus"></i> Insertar',['value'=>Url::to('create'),'class' => 'btn btn-info','data-toggle'=>'modal','data-target'=>' ajax','id'=>'ModalButtonCreate']); ?>

<?php  
  Modal::begin(['title'=>'Insertar', 'id'=>'modalCreate', /*'size'=>'modal-lg',*/]);
  echo '<div id="modalContentCreate"></div>';
  Modal::end();
?>

项目中的main.js文件:主文件.js

$(function(){
 $('#ModalButtonCreate').click(function(){  
     $('#modalCreate').modal('show').find('#modalContentCreate').load($(this).attr('value'));
  }); 
});

项目中的AppAsset文件:应用程序资产

class AppAsset extends AssetBundle {
     public $basePath = '@webroot';
     public $baseUrl = '@web';
     public $css = ['css/site.css',];
     public $js = ['js/main.js',];
     public $depends = ['yii\web\YiiAsset','yii\bootstrap4\BootstrapAsset',]; 
  }
wgx48brx

wgx48brx1#

你没有把“Create”文件代码放在这里进行检查。2最好把它放在这里而不是AppAsset。3因为显然你的奖章工作得很好
可用的代码仅表示单击按钮,将显示奖牌窗口,然后通过jQuery中的 AJAX load方法呈现“Create”页面。
在“创建”页上,必须使用ActiveForm或Html库中的活动方法(如表单中的activeInput)才能使用模型类或“ActiveRecord”类。例如,“ActiveRecord”中的save()方法和“model”或“ActiveRecord”中的validate()方法。

***取决于您使用的($model->load($this->request->post()) && $model->save())

注意:如果您正在处理模型并且需要验证,请考虑使用ActiveForm。link
有两组输入方法。一组以active开头,称为active input,另一组不以active开头。Active input从指定的模型和属性中获取数据,而在常规输入的情况下,数据是直接指定的。link
Here是一个完整的指南,通过 AJAX (创建和更新)与ajax在弹出式窗口中呈现表单
祝你好运

相关问题