首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >in 2:登录、注册和密码重置表单在单一视图中一起工作吗?

in 2:登录、注册和密码重置表单在单一视图中一起工作吗?
EN

Stack Overflow用户
提问于 2014-12-06 07:14:45
回答 1查看 3.8K关注 0票数 1

我正在使用yii2为webapp。我被困在一个非常独特的地方&需要帮助

我使用javascript fadeIn & Fadeout效果来显示和隐藏表单。因此,为了实现这种效果,我必须将这三种表单放在一个视图中,并在单击按钮时调用相应的控制器(actionlogin、actionSignup和actionPasswordReset)。

我将所有三种表单参数的规则声明为验证所需的规则,但当我提交表单时,它没有进一步工作,因为它希望我填充其他两个表单字段,以及提交,因为其他两个表单也处于相同的视图中。

我还把我的javascript代码称为动画--在这里:

代码语言:javascript
复制
        <script>
        jQuery(document).ready(function() {
        App.setPage("login");  //Set current page
        App.init(); //Initialise plugins and elements
                                    });
    </script>
    <script type="text/javascript">
        function swapScreen(id) {
            jQuery('.visible').removeClass('visible animated fadeInUp');
            jQuery('#' + id).addClass('visible animated fadeInUp');
        }
    </script>

任何人都知道怎么做

守则是:

代码语言:javascript
复制
<section id="login"  class="visible">
     <?php $form = ActiveForm::begin(['id' => 'login-form', 'options' => array('role' => 'form')]); ?>
     <div class="form-group">
     <?= $form->field($model, 'email_address',['template' => "{label}\n<i class='fa fa-envelope'></i>\n{input}\n{hint}\n{error}"]); ?>
     </div>
          <div class="form-group">
             <?= $form->field($model, 'password', ['template' => "{label}\n<i class='fa fa-lock'></i>\n{input}\n{hint}\n{error}"])->passwordInput(); ?>
           </div>
           <div class="form-actions">
           <?= $form->field($model, 'rememberMe',['template' => "{input}&nbsp;{label}"])->checkbox(); ?>
           <?= Html::submitButton('Submit', ['class' => 'btn btn-danger', 'name' => 'login-button']) ?>
           </div>
 <?php $form = ActiveForm::end(); ?>

我的注册页面是

代码语言:javascript
复制
<section id="register" class="visible">

 <?php $form = ActiveForm::begin(['id' => 'signup-form',  'options' => array('role' => 'form')]); ?>
  <div class="form-group">
   <?= $form->field($model, 'full_name',['template' => "{label}\n<i class='fa fa-font'></i>\n{input}\n{hint}\n{error}"]); ?>
   </div>
   <div class="form-group">
     <?= $form->field($model, 'email',['template' => "{label}\n<i class='fa fa-envelope'></i>\n{input}\n{hint}\n{error}"]); ?>
    </div>
    <div class="form-group"> 
    <?= $form->field($model, 'input_password',['template' => "{label}\n<i class='fa fa-lock'></i>\n{input}\n{hint}\n{error}"])->passwordInput() ?>
     </div>
     <div class="form-group">
     <?= $form->field($model, 'input_confirm_password',['template' => "{label}\n<i class='fa fa-check-square-o'></i>\n{input}\n{hint}\n{error}"])->passwordInput() ?>
      </div>
       <div class="form-actions">
        <?= $form->field($model, 'agreeTC',['template' => "{input}"])->checkbox(['class' => 'uniform']); ?>                                       
        <?= Html::submitButton('Signup', ['class' => 'btn btn-success', 'name' => 'signup-button']) ?>
          </div>

&我的请求重置代码是:

代码语言:javascript
复制
<section id="forgot" class="visible">
 <?php $form = ActiveForm::begin(['id' => 'request-password-reset-form']); ?>
    <div class="form-group">
       <?= $form->field($model, 'reset_email',['template' => "{label}\n<i class='fa fa-envelope'></i>\n{input}\n{hint}\n{error}"]); ?>
       </div>
        <div class="form-actions">
        <?= Html::submitButton('Send Me Reset Instructions', ['class' => 'btn btn-info', 'name' => 'reset-button']) ?>   
         </div>
         <?php $form = ActiveForm::end(); ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-29 10:13:04

您可以尝试这样做,使Controller actionYourview()、实例3模型并发送到视图。示例控制器

代码语言:javascript
复制
//your login,signup and passReset model dir 
use frontend\models\login;
use frontend\models\signup;
use frontend\models\passReset;

//example if the Controller is Site (defaulOne)
class SiteController extends Controller
{
    //your action
    public function actionYourview(){
    //1 Make your 3 models for separate

        $loginModel = new login();
        $signupModel = new signup();
        $passResetModel = new passReset();

        //this will solve your problem of the three forms as 'required' 
        if($loginModel->load(Yii::$app->request->post()) &&  $loginModel){ //if Login form is summit and validate 
            //do your login stuff

        }else if($signupModel->load(Yii::$app->request->post())){ //if $signupModel form is summit 
            //do your signup stuff

        }else if($passResetModel->load(Yii::$app->request->post())){ //if $passreset form is summit 
            // do yout pass reset stuff
        }else{ // and else just render and make sure that you pass your 3 models

        return $this->render('Yourview',[
            'loginModelToView'           =>$loginModel,
            'signupModelToView'          =>$signupModel,
            'passResetModelToView'       =>$passResetModel
        ]);
        }
    }

}

视图只需将$model更改为各自的模型

登录

代码语言:javascript
复制
<section id="login"  class="visible">
     <?php $form = ActiveForm::begin(['id' => 'login-form', 'options' => array('role' => 'form')]); ?>
     <div class="form-group">
     <?= $form->field($loginModelToView, 'email_address',['template' => "{label}\n<i class='fa fa-envelope'></i>\n{input}\n{hint}\n{error}"]); ?>
     </div>
          <div class="form-group">
             <?= $form->field($loginModelToView, 'password', ['template' => "{label}\n<i class='fa fa-lock'></i>\n{input}\n{hint}\n{error}"])->passwordInput(); ?>
           </div>
           <div class="form-actions">
           <?= $form->field($loginModelToView, 'rememberMe',['template' => "{input}&nbsp;{label}"])->checkbox(); ?>
           <?= Html::submitButton('Submit', ['class' => 'btn btn-danger', 'name' => 'login-button']) ?>
           </div>
 <?php $form = ActiveForm::end(); ?>

注册

代码语言:javascript
复制
<section id="register" class="visible">

 <?php $form = ActiveForm::begin(['id' => 'signup-form',  'options' => array('role' => 'form')]); ?>
  <div class="form-group">
   <?= $form->field($signupModelToView, 'full_name',['template' => "{label}\n<i class='fa fa-font'></i>\n{input}\n{hint}\n{error}"]); ?>
   </div>
   <div class="form-group">
     <?= $form->field($signupModelToView, 'email',['template' => "{label}\n<i class='fa fa-envelope'></i>\n{input}\n{hint}\n{error}"]); ?>
    </div>
    <div class="form-group"> 
    <?= $form->field($signupModelToView, 'input_password',['template' => "{label}\n<i class='fa fa-lock'></i>\n{input}\n{hint}\n{error}"])->passwordInput() ?>
     </div>
     <div class="form-group">
     <?= $form->field($signupModelToView, 'input_confirm_password',['template' => "{label}\n<i class='fa fa-check-square-o'></i>\n{input}\n{hint}\n{error}"])->passwordInput() ?>
      </div>
       <div class="form-actions">
        <?= $form->field($signupModelToView, 'agreeTC',['template' => "{input}"])->checkbox(['class' => 'uniform']); ?>                                       
        <?= Html::submitButton('Signup', ['class' => 'btn btn-success', 'name' => 'signup-button']) ?>
          </div>

最后,重置

代码语言:javascript
复制
<section id="forgot" class="visible">
 <?php $form = ActiveForm::begin(['id' => 'request-password-reset-form']); ?>
    <div class="form-group">
       <?= $form->field($passResetModelToView, 'reset_email',['template' => "{label}\n<i class='fa fa-envelope'></i>\n{input}\n{hint}\n{error}"]); ?>
       </div>
        <div class="form-actions">
        <?= Html::submitButton('Send Me Reset Instructions', ['class' => 'btn btn-info', 'name' => 'reset-button']) ?>   
         </div>
         <?php $form = ActiveForm::end(); ?>

希望这就是你的样子。祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27329306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档