如何放置CodeIgniter';s/TankAuth';s的注册和登录表格在同一页上


How do I put CodeIgniter's/TankAuth's register and login forms on the same page?

我的php框架使用CodeIgniter,授权/注册使用TankAuth。默认情况下,TankAuth将注册和登录表单放置在不同的页面上。我想把登录表单放在每个页面上出现的导航栏中。还有一个注册页面,注册表格将与登录表格同时出现(位于导航栏中)。

我目前正在controllers/signup.php.index()中使用此…

            $this -> load -> view('templates/header');
            $this -> login();
            $this -> register();
            $this -> load -> view('templates/footer');

这显示正确,但我有两个问题:

1我是否必须在每个具有登录表单的控制器中重新定义TankAuth的方法?

2当我尝试注册时,它告诉我也应该填写登录表。这显然是第二十二条军规。

(如果这太具体或模糊,我深表歉意;我希望这对那些使用过该框架的人来说是有意义的。)

我不确定您试图通过组合登录&注册视图时,它们并不是为了协同工作而设计的,因此您需要对基本的tank-auth结构进行一些修改。

这真的不应该是一个令人困惑的问题,因为这只是你通过结合两种非常相似的形式为自己创造的问题。

要简单地完成这一步,(我不知道你做了什么代码更改)首先你必须创建自己的登录(html),设置表单action="/auth/login"

登录将提交,如果很明显用户已经登录,您可以这样处理,HOWEVER如果他们登录失败,他们将进入单页登录(默认/或修改),在那里他们可以重试。

注册时也应如此,设置表单action="/auth/register",并让它针对tank auth控制器提交。同样,如果注册成功,他们将被穿梭在任何地方,否则将被带到一个注册页面。

使用原始的登录注册视图开始您需要更改/更新的内容。

Tank Auth实际上是一个插件,你需要根据自己的需求进行修改,它的代码清晰明了,所以只需浏览一下,就可以了解登录时发生了什么,注册、激活等情况,否则将事情拼凑在一起不会有任何进展。根据我对该库的个人经验,我总是在初始设置之外对其进行修改,只是因为它很简单。

我不确定这是否仍然是一个问题,但如果您真的想这样做,您可以将一个视图作为IFRAME包含在另一个视图中,而不会出现任何问题。