我是编程新手,我真的需要 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">× </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,
]);
}
}
请有人救救我:(
OBS:对不起我的英语
您无法在索引中再次将模态渲染为第二张图像,因为您在没有 Ajax 调用的情况下使用 renderAjax(),请阅读此 renderAjax。 要在 yii2 中发出 Ajax 请求,在互联网上您可以找到很多教程,如果您对代码有疑问,请在这里询问。