2016-07-11 2 views
1

에 같은 페이지에서이 폼 태그를 사용하기 널 (null)의 멤버 함수는 FormName에 오류 전화()어떻게이 양식이 YII, 의 프론트 엔드에서 YII

// 양식 코드

<!-------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에서도 코드를 보여줍니다! –

+1

컨트롤러에서'$ modelLogin'을 전달 했습니까? pls 컨트롤러 로그인 작업도 표시됩니다. –

+0

공개 actionIndex 함수() { \t \t \t \t 경우 (는 isset ($ _ REQUEST [ '가입'])) { \t \t \t \t \t $ modelSignup = 새로운 SignupForm(); $ this-를 반환 > ('인덱스'[ \t \t \t 'modelSignup'=> $ modelSignup, \t \t를]) 렌더링; 다른} \t \t \t \t { \t \t \t $ modelLogin = 새로운 LoginForm(); $ this-를 반환 > ('인덱스'[ \t \t \t 'modelLogin'=> $ modelLogin, \t \t를]) 렌더링; \t \t –

답변

0

이 시도 :

컨트롤러 :

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

은 또한 코드에서이 검사를 제거 : 뷰 파일에서

if(isset($modelLogin) 
+0

............. 해당 코드의 로그인 폼이 표시되지 않습니다. 왜냐하면 해당 코드는 우리가 로그인 할 때 시간이 표시 될 것임을 의미하기 때문입니다. –

+0

index.php 코드를 보여주십시오 –

+0

색인에 .php 나는 두 가지 형식의 코드를 alery 내가 쿼리에 넣어 –

0

당신은 두 가지 모델, signup에 대한 하나 login의 다른를 사용하고 있습니다. 그러나 귀하의 의견에서 나는 한 번에 하나의 모델 만 전달한다는 사실에 주목했습니다. 첫 번째 모델 또는 두 번째 모델 일 수 있습니다. 다음 코드를 사용하여 actionIndex()를 교체해야합니다 그래서 :

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

이 당신을 도울 것입니다.