2016-07-11 5 views
1

Im Frontend von Yü, Ich habe 2 Form: 1 Login Form 2 Anmelden mein Anmeldeformular funktioniert, aber wenn Login funktioniert nicht, i a gefunden Fehler Anruf auf eine Elementfunktion Formularname() auf nullWie man verwendet 2-Formular-Tag in derselben Seite in Yü

// Form Code

<!-------signup----------> 
<h1>Signup Form</h1> 
<?php $form = ActiveForm::begin(['id' => 'form-signup', 'action' => Url::to(['site/signup'])]); ?> 
    <?= $form->field($modelSignup, 'username')->textInput(['autofocus' => true]) ?> 
    <?= $form->field($modelSignup, 'email') ?> 
    <?= $form->field($modelSignup, 'password')->passwordInput() ?> 
    <?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?> 
<?php ActiveForm::end(); ?> 
<!-------// signup----------> 

<!-------login----------> 
<h1>Login Form</h1> 
<?php $form = ActiveForm::begin(['id' => 'form-login', 'action' => Url::to(['site/login'])]); ?> 
    <?= $form->field($modelLogin, 'username')->textInput(['autofocus' => true]) ?> 
    <?= $form->field($modelLogin, 'email') ?> 
    <?= $form->field($modelLogin, 'password')->passwordInput() ?> 
    <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> 
<?php ActiveForm::end(); ?> 
<!-------//login----------> 
+0

pls zeigen Sie auch von Code! –

+1

haben Sie '$ modelLogin' vom Controller übergeben? Bitte zeigen Sie auch Ihre Login-Aktion für den Controller an. –

+0

public function actionIndex() { \t \t \t \t if (isset ($ _ REQUEST [ 'Anmeldung'])) \t \t { \t \t \t $ modelSignup = new SignupForm(); $ this- return> render ('index', [ \t \t \t 'modelSignup' => $ modelSignup, \t \t]); \t \t} \t \t else { \t \t \t $ modelLogin = new Loginform(); $ this- return> render ('index', [ \t \t \t 'modelLogin' => $ modelLogin, \t \t]); \t \t} } –

Antwort

0

Versuchen Sie folgendes:

Controller:

public function actionIndex() { 
     $modelSignup = new SignupForm(); 
     $modelLogin = new LoginForm();  
     return $this->render('index',[ 'modelSignup' => $modelSignup,'modelLogin' => $modelLogin ]);   
} 

Auch diese Prüfung aus dem Code entfernen:

if(isset($modelLogin) 
+0

............. durch diesen Code Login-Formular nicht angezeigt, weil dieser Code bedeutet, wenn wir auf Login klicken, dass Zeit zeigt Formular –

+0

zeigen Sie mir Ihre Index.Php-Code –

+0

In Index .php Ich habe 2 Formen, die Code alery ist, setze ich Frage ein –

0

Ihrer Ansicht Datei, die Sie zwei Modelle verwenden, einen für signup und die andere für login. Aber von Ihrem Kommentar hatte ich bemerkt, dass Sie nur ein Modell auf einmal passieren, es kann das erste oder das zweite sein. So können Sie Ihre actionIndex() mit dem folgenden Code ersetzen sollte:

public function actionIndex() { 
    $modelSignup = new SignupForm(); 
    $modelLogin  = new LoginForm(); 
    if(isset($_POST['SignupForm'])) { 
     //code for signup process 
    } 

    if(isset($_POST['LoginForm'])) { 
     //code for login process 
    } 

    return $this->render('index', [ 'modelSignup' => $modelSignup, 'modelLogin' => $modelLogin ]); 
} 

Dies wird Ihnen helfen.