2016-08-31 2 views
0

У меня есть виджет Tabs :: Все настройки находятся на разных вкладках в ActiveForm, и администратор может установить конфигурацию на каждой вкладке и после отправки. (Несколько форм в одном виджете)положите кнопку отправки в Tabs :: widget в yii2

в заходящего зрения:

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

Форма и кнопка отправки не работают. где моя проблема?

ответ

0

Кажется, вы не имеете ActiveForm::end()

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

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

и для отладки не обрезают имя кнопки

0

Так что я нашел свой ответ. Моя проверка была ложной.

в правиле():

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

Но я отправляю форму без заполненных всех полей.

я изменил

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

[['login', 'wsdl', 'password',from1'], 'safe',], 
Смежные вопросы