【问题标题】:Render Modal with data使用数据渲染模态
【发布时间】:2017-11-27 18:35:41
【问题描述】:

我是编程新手,我真的需要 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>

Controller、Modal相关的动作:

// 渲染表单

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,
               ]);
        }

    }

请有人救救我:(

OBS:对不起我的英语

【问题讨论】:

  • 您忘记解释代码的哪些部分给您带来了问题。这里有很多代码。您面临什么具体问题?
  • 1st,我不知道如何使用ajax发送/保存,2nd,发送后,我无法在索引中再次将模态渲染为第二张图像
  • 在这种情况下,您的问题在这里太宽泛了——我们通常在这里用代码修复特定的错误,而不是提供广泛的解决方案。您似乎对所涉及的步骤有所了解。研究如何做每一点(例如,在线上有数千个关于如何使用 ajax 调用的示例,如果您在谷歌上搜索教程、文档等),尝试将其应用于您的情况。如果您遇到困难,请在此处发布您尝试过的内容,以及您遇到的任何错误,我们可以帮助您解决实际问题,而不是您缺乏概念理解。我们会修复您的代码,而不是为您学习。
  • @KauêZuquetto 我有几个问题: 1. 为什么需要使用 Ajax 来存储数据?你有这样做的目的吗?我认为你可以通过提交表单的简单 POST 来实现,如果你这样做的话,你会更容易实现它,因为如果你有正确的模型和视图来显示数据,Yii2 几乎可以做所有其他事情将其保存在您的数据库中后,您可以使用 GII
  • stackoverflow.com/questions/44400958/…。我相信这就是您正在寻找的。我已经放置了一个答案,展示了如何使用 modals 和 ajax。

标签: ajax yii2 yii2-basic-app


【解决方案1】:

您无法在索引中再次将模态渲染为第二张图像,因为您使用 renderAjax() 没有 Ajax 调用,请阅读此renderAjax。 要在 yii2 中发出 Ajax 请求,您可以在 Internet 上找到很多教程,如果您对代码有问题,请在此处提问。

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2017-08-25
    • 2012-06-13
    • 2011-02-25
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多