2017-02-26 1 views
0

Ich benutze ein 'Kontaktformular' in Layout-Seite. Dies ist main.php Layoutseite:Implementierung von cacha im Layout in yii2

<footer class="footer"> 
    <div class="container" style="background-color: #F5F5F5"> 
     <?= \frontend\mostafa\formWidget::widget(); ?> 

und in meiner benutzerdefinierten formWidget ich eine Ansichtsdatei verdient gemacht haben:

class formWidget extends \yii\base\Widget{ 
... 
return $this->render('post',['model'=>$model]) 

und post.php ist:

<?= $form->field($model, 'verifyCode', ['template' => '{label}'])->widget(Captcha::className(), [ 
    'template' => '<div class="col-xs-12">{image}</div><div class="col-xs-12">{input}</div>', 
    'options' => [ 
     'placeholder' => 'CAPTCHA Code', 
     'class' => 'form-control', 
    ], 
]) ?> 

Meine Probleme sind:

  1. Da verwende ich Widget für das Formular validieren Wo sollte ich CaptchaAction setzen?
  2. Warum zeigt das Captcha immer eine falsche Nachricht an?
  3. Das Captcha Bild ist immer das gleiche und funktioniert nicht.
+0

, warum Sie das Captcha in dem Layout haben? – scaisEdge

+0

Ihr Formular haben keine Ajax-Validierung –

+0

1) Warum haben Sie das Captcha im Layout verwendet? Wenn Sie es in Ihrem Layout verwenden, wird Captcha überall dort sein, wo Sie das Layout nennen. Ich würde vorschlagen, rufen Sie das Layout im Kontaktformular und verwenden Sie Captcha in das Kontaktformular und sehen, wie es geht und Ihre Zweifel, wenn überhaupt .. –

Antwort

0

ist der Formularabschnitt

<?php 
$form = ActiveForm::begin([ 
'id'      => 'registration-form', 
'enableAjaxValidation' => true, 
'enableClientValidation' => false]); 
?> 
<div class="col-lg-4" style="width: 50%;"> 
    <?= $form->field($model, 'name', ['template' => "{input}\n{hint}\n{error}"])->textInput(['placeholder' => $model->getAttributeLabel('name')]); ?> 
</div> 

<div class="col-lg-4" style="width: 50%;"> 
    <?= $form->field($model, 'email', ['template' => "{input}\n{hint}\n{error}"])->textInput(['placeholder' => $model->getAttributeLabel('email')]); ?> 
</div> 
<div class="col-lg-4" style="width: 100%;"> 
    <?php echo $form->field($model, 'subject')->textInput(['maxlength' => 255, 'id' => 'contact_form', 'placeholder' => $model->getAttributeLabel('subject')])->label(false) ?> 
    <?= $form->field($model, 'body')->textArea(['rows' => 3, 'placeholder' => $model->getAttributeLabel('body')])->label(false) ?> 
    <?= $form->field($model, 'verifyCode', ['template' => '{label}'])->widget(Captcha::className(), [ 
'template' => '<div class="col-xs-12">{image}</div><div class="col-xs-12">{input}</div>', 
'options' => ['placeholder' => 'CAPTCHA Code', 'class' => 'form-control']]) ?> 
    <div class="form-group" style="float: right"> 
    <?= Html::submitButton('sending',['class' => 'btn btn-info', 'name' => 'contact-button']) ?> 
    </div>