一個view helper可能是這個
namespace MyModule\View\Helper;
use Zend\View\Helper\AbstractHelper;
use MyModule\Service\AuthService;
class IsAuthenticated extends AbstractHelper
{
protected $authService;
public function __construct(AuthService $authService) {
$this->authService = $authService;
}
public function __invoke()
{
return $this->authService->hasIdentity();
}
}
更自包含的解決方案創建一個工廠在你的module.php
public function getViewHelperConfig()
{
return array(
'factories' => array(
'IsAuthenticated' => factory($sl) {
$authService = $sl->getServiceLocator()->get('AuthService');
return new View\Helper\IsAuthenticated($authService);
},
),
);
}
然後你就可以在視圖或佈局內使用 - 也許部分
if ($this->isAuthenticated()) {
// render the login/logout
$this->partial('some/view/file', array('foo', 'bar'));
}
視圖的插件可以擴展到代理到其他AuthService
方法。不過,我希望這個簡短的例子說明如何去做。
我想你應該設置'$這個 - > getAdminAuthService() - > hasIdentity()'到在控制器中的變量,並通過它來查看。 –
如何做到這一點,因爲我沒有一個特別的頭部動作,而是頭部被包含在onDispatch中,就像這個公共函數onDispatch(\ Zend \ Mvc \ MvcEvent $ e){header = new ViewModel(); $ header-> setTemplate('layout/header'); $ this-> layout() - > addChild($ header,'header'); – user2406735
getAdminAuthService方法在哪裏? –