php如何实现添加公共模板,php – ZF2:在模板中添加一个Login小部件

我目前正在构建我的网站,而且我遇到了这个问题.

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

在中间栏中,将有内容.

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

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

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

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

谢谢 !

解决方法:

好的,所以我找到了解决方案.我不知道它是不是最好的,但它确实有效.

我把它与我在网上找到的东西混合在一起.

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

$this->Login_widget();

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

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;

use Application\Form\LoginForm;

use Zend\ServiceManager\ServiceManager;

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 View\Helper\Loginhelper();

$viewHelper->setServiceLocator($serviceLocator);

return $viewHelper;

}

)

);

}

使用此代码,您可以将serviceLocator提供给viewhelper.

现在,您可以在viewhelper中检索您的服务.同样,我不太确定它是否是最佳解决方案,但它确实有效.

您的查看帮助程序现在正在运行.您只需创建视图助手的内容即可.

您可以返回部分(如我所做),或返回HTML代码(适用于小事).

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

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

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

echo $this->Login_helper();

?>

<?php echo $this->content; ?>

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

标签:php,zend-framework2

来源: https://codeday.me/bug/20190729/1567380.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值