Yii框架如何将登录表单集成到每个页面上都可见的标题中,

Yii框架如何将登录表单集成到每个页面上都可见的标题中,,yii,Yii,我有三个模块1)客户端2)生产者和搜索,我想在标题中显示登录表单 登录表单是针对制作人的,表示制作人可以登录 主题\神话主题\视图\布局 <div id=weppr> <div class=fr header-right> <?php $form=$this->beginWidget(CActiveForm, array( id=>login-form, enableClientValidation=>

我有三个模块1)客户端2)生产者和搜索,我想在标题中显示登录表单

登录表单是针对制作人的,表示制作人可以登录

主题\神话主题\视图\布局

<div id=weppr>
  <div class=fr header-right>
      <?php $form=$this->beginWidget(CActiveForm, array(
        id=>login-form,
        enableClientValidation=>true,
        clientOptions=>array(
        validateOnSubmit=>true,
        ),
)); 
    echo $form->textField($model,username,array(placeholder=>Enter Email,class=>login-input)); 
    echo $form->passwordField($model,password,array(placeholder=>Enter Password,class=>login-input)); 
    echo CHtml::submitButton(Login,array(class=>login-button));
    $this->endWidget(); 
    <div>
    <?php echo $content; ?>
    </div>

它给出了错误


是否可以放入main.php,是否可以接受编码,如果不能,请说明如何操作,以及如何将每个页面上可见的登录页面与不同的模块集成在一起我认为您应该尝试以下方法:

LoginWidget.php

<?php  class LoginWidget extends CWidget {
public function run() {
    $model = new LoginFormModel;
    $form= $this->beginWidget('CActiveForm', array(
        'id'=>'login-form',
        'action'=>array('site/login'),
        'enableClientValidation'=>true,
        'clientOptions'=>array(
            'validateOnSubmit'=>true,
        )
    ));
    echo $form->textField($model,'username',array('placeholder'=>'Enter Email',class=>'login-input'));
    echo $form->passwordField($model,'password',array('placeholder'=>'Enter Password',class=>'login-input'));
    echo CHtml::submitButton('Login',array(class=>'login-button'));
    $this->endWidget();
} } ?>

在布局文件中:

<?php $this->widget('LoginWidget'); ?>


那就够了

查看portlet小部件,并将其放到布局中。在主布局中,只需添加一个登录链接,只有当用户是guest时才会显示该链接,ehile单击该链接会显示一个包含登录表单的灯箱,但它超出了范围,不能更改要求,你能给出错误吗?我猜它会给出错误,因为它被提交到错误的操作中。正如@ineersa建议的try portlet或widgetI所想,您忘了在
CActiveForm
上设置
action
属性。类似于
'action'=>数组('site/login')
。否则,表单将提交到当前操作,登录数据将永远无法处理。感谢您指出这一点。我修改了答案以反映这一点