我可以从 cakephp 中的视图重定向吗

Posted

技术标签:

【中文标题】我可以从 cakephp 中的视图重定向吗【英文标题】:Can I redirect from a view in cakephp 【发布时间】:2011-04-06 16:42:50 【问题描述】:

我的主页上有一个指向注册/登录页面的按钮。注册/登录页面只是 views/pages/signup.ctp 中的一个页面,因此没有与之关联的操作。

我想要这样,如果用户在主页上时已经登录并且他们单击我的注册/登录按钮,而不是将他们带到注册/登录页面,它会将他们重定向到另一个操作。但由于登录/登录页面没有操作,我不知道在哪里进行检查和重定向。有没有办法检查一个人是否在 signup.ctp 视图中登录?并从那里重定向它们?

这可能与现实相去甚远,但我很困惑。任何帮助表示赞赏。干杯:)

【问题讨论】:

【参考方案1】:

为注册创建一个操作...您可以在那里进行验证。我认为将重定向放在视图中不是一个好习惯。例如,您可以将操作放在 Homepage 控制器中...

即使将重定向放在视图中很漂亮,您也需要设置一个变量(在操作中)来检查用户是否登录。 :)

【讨论】:

【参考方案2】:

您可以为主页中的按钮放置不同的链接..

即根据用户的状态(登录或未登录),您将选择与按钮关联的链接..

我不知道你是否在使用Auth 组件.. 如果是这样,在您的主页模板中,您可以执行以下操作:

<?php
  if ($session.read('Auth.User')) 
    // the user is logged in
    // put the link to the other action
  
  else 
    // the user isn't logged in
    // put the link to the signup/login page
  
?>

这样,您将不需要重定向用户...

希望这会有所帮助..

祝你发展顺利...

【讨论】:

【参考方案3】:

在您的 ExampleController 中为特定视图(例如“example.ctp”)执行此操作

public function example()
   if ($session.read('Auth.User')) 
       this->redirect(['action' => 'exampleview']);
   

希望它能解决你的问题。

【讨论】:

【参考方案4】:

你可以使用

header ("Location: ".$this->html->url('/'));

【讨论】:

【参考方案5】:

你也可以使用

header ("Location: ".$this->Html->url(array('controller'=>'Home','action'=>'index')));

在 cakephp 中使用控制器和动作

【讨论】:

以上是关于我可以从 cakephp 中的视图重定向吗的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 中的本地化路由:如何重定向到默认语言

在 CakePHP 中 301 重定向页面的最佳方法是啥?

请求在身份验证后重定向期间挂起

身份验证后重定向期间请求挂起

CakePHP 登录后重定向到当前页面

Cake PHP 使用 url 中的参数重定向