将提交按钮放在yii2中的Tabs :: widget中

时间:2016-08-31 13:51:01

标签: forms tabs yii2 widget

我有一个Tabs :: widget,所有设置都位于ActiveForm的不同标签中,管理员可以在每个标签中设置配置并提交一次。(一个小部件中有多个表单)

在设置视图中:

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

echo \yii\jui\Tabs::widget([
'headerOptions' => ['class' => 'tabs'],
'itemOptions' => ['tag' => 'div'],
'items' => [
    [
        'label' => 'serverSetting',
        'content' => $this->render('serverSetting', ['model' => $model, 'form' => $form]),
        'active' => true
    ],
    [
        'label' => 'emailSetting',
        'content' => $this->render('emailSetting', ['model' => $model, 'form' => $form]),
    ],
    [
        'label' => 'smsSetting',
        'content' => $this->render('smsSetting', ['model' => $model, 'form' => $form]),
    ],
],
]);

?>
  <div class="btnForm">
<?= Html::submitButton(Yii::t('app', 'ثبت', ['class' => 'btn btn-primary', 'name' => ''])) ?>
 </div>
 <?php ActiveForm::end(); ?>

查看其中一个选项卡(smsServer视图):

<?php
use yii\helpers\Html;
use app\components\ActiveForm;
?>
<div class="user-form">

<?= $form->field($model, 'login')->textInput(['placeholder' => 'host']) ?>
<?= $form->field($model, 'password1')->textInput(['placeholder' => 'username']) ?>
<?= $form->field($model, 'wsdl')->textInput(['placeholder' => 'password']) ?>
<?= $form->field($model, 'from1')->textInput(['placeholder' => 'port']) ?>
</div>
控制器中的

public function actionSetting()
{
    $model = new Setting();
    $model->setAttributes(Yii::$app->params, false);
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        file_put_contents(Yii::getAlias('@app/config') . DIRECTORY_SEPARATOR . 'extra_params.php', base64_encode(serialize($model->attributes)));
    }
    return $this->render('setting', [
        'model' => $model,
    ]);
}

我的表单和提交按钮不起作用。我的问题在哪里?

2 个答案:

答案 0 :(得分:0)

好像你没有ActiveForm::end()

 .......
  <div class="btnForm">
    <?= Html::submitButton(Yii::t('app', 'ثبت', ['class' => 'btn btn-primary'])) ?>
  </div>

<?php ActiveForm::end(); ?>

并且用于调试不要禁止按钮的名称

答案 1 :(得分:0)

所以我找到了答案。我的验证是错误的。

规则()中的

 [['login', 'wsdl', 'password','from1'], 'required',],

但我发布的表格没有填写所有字段。

我改为

[['login',], 'required',],

[['login', 'wsdl', 'password',from1'], 'safe',],