加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – ZF2:在模板中添加一个Login小部件

发布时间:2020-12-13 21:48:08 所属栏目:PHP教程 来源:webdesigner的(最好的)选项">上
导读:我目前正在构建我的网站,而且我遇到了这个问题. 我想要一个带有侧栏和中间栏的布局. 在中间栏中,将有内容. 在侧栏中,将有登录表单,如果已经记录,则为“欢迎XXX”.这样您就可以登录每一页. 问题是:我不知道如何创建管理所有日志表单/欢迎消息的小部件/视图助
我目前正在构建我的网站,而且我遇到了这个问题.

我想要一个带有侧栏和中间栏的布局.

在中间栏中,将有内容.
在侧栏中,将有登录表单,如果已经记录,则为“欢迎XXX”.这样您就可以登录每一页.

问题是:我不知道如何创建管理所有日志表单/欢迎消息的小部件/视图助手.

目前,我有一个专门用于登录的整个控制器,效果很好.但这不是我需要的:).

任何想法或简单的解释将不胜感激:p.

谢谢 !

解决方法

好的,所以我找到了解决方案.我不知道它是不是最好的,但它确实有效.
我把它与我在网上找到的东西混合在一起.

如果您从未构建过身份验证服务,请查看本教程:
http://samsonasik.wordpress.com/2012/10/23/zend-framework-2-create-login-authentication-using-authenticationservice-with-rememberme/

所以主要的解决方案是使用view-helper.所以在我们的布局中我们只需要调用类似的东西:

$this->Login_widget();

您必须创建自定义视图助手:

namespace ApplicationViewHelper;

use ZendViewHelperAbstractHelper;
use ApplicationFormLoginForm;
use ZendServiceManagerServiceManager;

class Loginhelper extends AbstractHelper{

    protected $serviceLocator;
    protected $authService;

    public function __invoke(){
        $this->authService = $this->serviceLocator->get('AuthService');

        if($this->authService->hasIdentity()){
            return $this->getView()->render('partial/login',array('getIdentity' => $this->authService->getIdentity()));
        }
        else{
            $form=new LoginForm();
            return $this->getView()->render('partial/login',array('form' => $form));
        }
    }

    public function setServiceLocator(ServiceManager $serviceLocator){
        $this->serviceLocator = $serviceLocator;
    }
}

我需要在这个视图帮助器中获得两件事.

>我的登录表单,以便在我的视图中显示它.
> ServiceManager(或ServiceLocator),用于获取我的身份验证服务(称为AuthService).

获取登录表单非常简单.只需加入它.
在Module.php中完成您的服务.

public function getViewHelperConfig()
{
    return array(
        'factories' => array(
            'Login_widget' => function ($helperPluginManager) {
                $serviceLocator = $helperPluginManager->getServiceLocator();
                $viewHelper = new ViewHelperLoginhelper();
                $viewHelper->setServiceLocator($serviceLocator);
                return $viewHelper;
            }
        )
    );

}

使用此代码,您可以将serviceLocator提供给viewhelper.
现在,您可以在viewhelper中检索您的服务.同样,我不太确定它是否是最佳解决方案,但它确实有效.

您的查看帮助程序现在正在运行.您只需创建视图助手的内容即可.
您可以返回部分(如我所做),或返回HTML代码(适用于小事).

如果使用partials,请不要忘记在module.config.php中声明它们.

就我而言,我测试用户是否已登录.如果他是,我打印像“欢迎家伙”,如果没有,我将表格对象传递给我的部分,并在我的视图中显示.整个身份验证过程在指定的控制器中完成.

现在,在您的布局中,您只需要调用viewhelper.

<div class="container">
    <div id="The_login_widget_div">
    <?php     
        echo $this->Login_helper();   
    ?>
    </div>

    <div id="main_content_div">
    <?php echo $this->content; ?> 
    </div>            
</div>

就是这样.我希望它有所帮助.顺便说一下,这是ZF 2.2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读