如何使用Zend Framework创建多个登录视图?

时间:2011-08-22 18:52:33

标签: zend-framework

我是ZF的新手,需要为我的3种用户类型,员工,雇主和管理员创建多个登录视图。我应该使用indexcontroller为员工提供登录并创建单独的控制器类来处理雇主和管理员登录页面吗?我如何利用JQuery将我的雇主和管理员用户从索引视图引导到正确的登录页面?

非常感谢:)

2 个答案:

答案 0 :(得分:1)

我会说这有点开放以便以一种好的方式回答,但我会尝试用我的想象填补空白并给你一个答案。我不使用JQuery,所以不幸的是我不能给你答案。

如果这只是为了处理登录我会猜测逻辑或多或少相同(即使它不是逻辑应该在模型中),你只想改变视觉外观,所以那么你可以使用代码

$this->_helper->viewRenderer->setRender('view-name');

默认情况下,此代码将呈现名为/application/views/scripts/controller/*view-name*.phtml的视图。因此,您可以获得用于区分不同用户的任何变量,并为他们提供正确的视图。

如果除了视觉之外还有更多的差异,我可能会在loginController中使用不同的动作或类似的东西。 然后我会为普通员工使用标准indexAction(因此默认情况下视图index.phtml),并在该页面上显示某些类型的文本,例如“不是员工?转而使用雇主登录”。然后雇主被引导到登录/雇主或类似的东西,默认情况下会调用雇主行动并使用雇主视图。然后你用管理员登录做类似的事情。然后控制器看起来像这样

<?php
class LoginController 
{

public function indexAction()
{
    /*Do login stuff here*/

}

public function employerAction()
{
    /*Do login stuff here*/

}

public function adminAction()
{
    /*Do login stuff here*/

}

}

最后,如果不同用户与您的网页互动的方式存在重大差异,您可以考虑查看模块。

您可以在http://framework.zend.com/manual/en/manual.html

找到所有这些信息

答案 1 :(得分:1)

我可以给你两个选择。

  1. 模块

    将您的应用程序拆分为称为模块的逻辑段,对于这3个组,每个组将接收自己的模块。 每个模块都模仿众所周知的标准“应用”结构:

    • 模块
      • 控制器
      • 模型
  2. ACL

    http://framework.zend.com/manual/en/zend.acl.html

    您可以检查当前登录的用户类型,并通过“if()”语句判断应该呈现哪个视图。 自定义视图渲染按“Lobo”所述完成: 通过

    $这 - &GT; _helper-&GT; viewRenderer-&GT; setRender( '视图名');


  3. 如果您没有任何用户会话数据,我的意思是,如果您完全不知道访问您网页的用户是哪种类型,您只需要提供3个链接到不同的模块或不同的控制器或一个和相同的控制器,但将用户类型作为参数传递。

    示例:

    链接到模块:/modulename/controllername/actionname/

    链接到某个控制器:/emplyeecontroller/login

    链接到处理不同参数的通用控制器:/logincontroller/login/type/emplyee


    有许多可能的解决方案可以实现您的目标。 你必须决定哪一个最适合你的项目。