使用数据渲染模态

时间:2017-11-23 10:50:57

标签: ajax yii2 yii2-basic-app

我是编程新手,我真的需要Ajax的帮助, 我真的不了解ajax,更不用说Yii2了,今天的挑战之一就是 能够打开模态创建,用ajax保存数据, 并使用模态

中的数据呈现表单

我走了多远:

模态触发器:

<?php echo Html::a('<span class="glyphicon glyphicon-comment"></span>',
                    ['atividade2','id' => $model->id_atividade], 
                    [
                        'title' => 'Atividades',
                        'data-toggle'=>'modal',
                        'data-target'=>'#modalvote',
                    ]
                   );
?>

在模态中创建表单:

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\helpers\ArrayHelper;
use app\modulos\GPS\models\GpsResponsaveis;
use app\modulos\GPS\models\User;
use app\modulos\GPS\models\GpsPrioridade;
use app\modulos\GPS\models\GpsStatus;
use app\modulos\GPS\models\GpsAtividades;


/* @var $this yii\web\View */
/* @var $model app\modulos\GPS\models\GpsSolicitacao */
/* @var $form yii\widgets\ActiveForm */
$this->title = 'Criar Atividade';
$this->params['breadcrumbs'][] = ['label' => 'GPS Solicitação', 'url' =>                                 ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<script     src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"     type="text/javascript"></script>
<link rel="stylesheet" type="text/css"     href="codebase/fonts/font_roboto/roboto.css"/>
<link rel="stylesheet" type="text/css" href="codebase/dhtmlxcalendar.css"/>
<script src="codebase/dhtmlxcalendar.js"></script>
<style>
.pushSpan {
margin-top: 25px;
}
</style>

<div class="box box-primary">
<div class="box-body">
<div class="gps-solicitacao-form">

    <?php
        $form = ActiveForm::begin();

        $sol_id = Yii::$app->request->get('sol_id');
        $sol_area = Yii::$app->request->get('sol_area');
        $model = new GpsAtividades();


     ?>
<div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;    </button>
        <h4 class="modal-title">Criar Atividade</h4>
      </div>
<div class="modal-body">
 <div class="col-sm-6"><!-- PRIMEIRA COLUNA -->

    <?= $form->field($model, 'responsavel')-    >dropDownList(ArrayHelper::map(User::find()->where(['id_area' => $sol_area])-    >all(), 'id', 'nome'), 
    array_merge( ['prompt' => 'Selecione'] ) ); ?>

<div class="form-group has-feedback">   
<?= $form->field($model, 'data_objetivo')->textInput(['maxlength' => true]) ?>
<span class="fa fa-calendar form-control-feedback pushSpan"></span>
</div>

<?= $form->field($model, 'prioridade')->dropDownList(ArrayHelper::map(GpsPrioridade::find()->all(), 'id_prioridade', 'nome_prioridade'), 
    array_merge( ['prompt' => 'Selecione'] ) ); ?>

</div>



 <div class="col-sm-6"><!-- SEGUNDA COLUNA -->

 <?= $form->field($model, 'descricao')->textArea(['maxlength' => true]) ?>
</div>
<div class="modal-footer">
<div class="form-group">

    <?= Html::submitButton('Criar Atividade', ['atividade','sol_id' =>         $sol_id,'class' => 'btn btn-success']) ?> 
</div>
</div>
<?php ActiveForm::end(); ?>

</div>
</div>
</div>
</div>

控制器,与模态相关的操作:

//呈现表单

public function actionAtividadeView()
    { 
       $model = new GpsAtividades();

       return $this->renderAjax('createAtividade', [
                'model' => $model,
        ]);

    }

//保存,渲染等

public function actionAtividade()
    { 
       $model = new GpsAtividades();




       if ($model->load(Yii::$app->request->post())) {

            $model->id_solicitacao = Yii::$app->request->get('sol_id');

            $model->save();

            Yii::$app->getSession()->setFlash('success', "Atividade     Criada");  

               return $this->renderAjax('createAtividade', [
                  'model' => $model,
               ]);


          } else {
              Yii::$app->getSession()->setFlash('error', "Não foi possivel     executar esta ação");  

              return $this->renderAjax('createAtividade', [
                  'model' => $model,
               ]);
        }

    }

Modal loaded fst

After Submit

请有人救我:(

OBS:抱歉我的英文

1 个答案:

答案 0 :(得分:1)

您无法在索引中再次呈现模式作为第二个图像,因为您使用了没有Ajax调用的renderAjax(),请阅读此renderAjax。 要在yii2中发出Ajax请求,在互联网上你可以找到很多教程,如果你在这里遇到代码问题。