【问题标题】:cake php setting your custom urlcake php 设置您的自定义网址
【发布时间】:2013-07-02 19:23:33
【问题描述】:

我正在开发 cakephp 2.x .. 我的 webapp url 是这样的 "http://www.myweb.com/" .. 所以之后我在登录后将用户重定向到入门页面.. “http://www.myweb.com/users/gettingstarted”.....我想要的是我想要一个这样的网址..

 http://www.myweb.com/gettingstarted...

所以为了做到这一点,我无法创建控制器名称gettingstarted,因为在 cakephp 中,如果您的数据库中没有类似的表名,您将无法创建控制器..希望您能得到这个..也许这是可能的..但不知道我该如何做到这一点..

【问题讨论】:

  • 如果您在数据库中没有类似的名称,您可以创建一个控制器...但是忽略这一点,您能更好地解释您想要什么吗?我知道你想要一个http://www.myweb.com/gettingstarted... url,但是那个gettingstarted,你想让它成为另一个控制器中的一个动作吗?喜欢UsersController->gettingstarted。请澄清。
  • @Nunser 抱歉,完全是……我想要一个像“com/gettingstarted”这样的网址……为了实现这一目标……我必须制作一个我不想要的控制器...我在其他控制器中有一个函数名称正在启动...我想在没有控制器名称的情况下调用该函数 url ......例如我想要像这样的重定向 $this->redirect $this->redirect( '/gettingstarted');

标签: cakephp url-rewriting cakephp-2.0 cakephp-2.1


【解决方案1】:

routes.php 中添加规则(最好在任何其他规则之前)

//this will send www.web.com/gettingstarted to UsersController->gettingStarted()
Router::connect('/gettingstarted',
                 array('controller' => 'users', 'action'=>'gettingstarted'));
//this is the default route for www.web.com
Router::connect('/', array('controller' => 'users', 'action' => 'index'));

我假设您的UsersController 中有一个gettingstarted 操作。哦,你没有将变量传递给动作。否则规则会有点不同。

对于所有这些“网址更改”,请阅读Routes doc。知道如何管理 url 会很有用。

编辑 如果您希望用户在成功登录后被重定向到入门页面,请更改您的 UsersController 的登录操作

public function login() {
   //all your login actions
   //if user is logged in
   $this->redirect(array('controller'=>'users', 'action'=>'gettingstarted'));
}

这会将您重定向到www.web.com/gettingstarted

【讨论】:

  • 所以是的 .. 你找到我了 .. 现在下一个问题是我应该替换这个 Router::connect('/', array('controller' => 'users', 'action' = > '索引')); ..因为当我这样做时 www.web.com ..由于这个 url 我来到了我的索引页面..我应该用这个替换它..我不认为这是一个好主意..因为在索引页面中我有一个登录页面
  • 这实际上取决于您希望您的网站如何(实际上与其他问题没有太大关系)。如果您希望“入门”页面成为某人在输入“www.web.com”时看到的第一页,那么您应该替换它。但我个人不推荐它,“入门”通常是您在索引上显示的内容(作为链接),以使网站更加用户友好,而不是每个人都看到的强制选项,无论他们是否已经知道如何获取开始与否。 但是!不要完全删除该规则,如果您删除该规则,蛋糕将不知道如何处理“www.web.com”。
  • 好的,谢谢你的提示..所以你是说登录后我不能像这样'www.web.com/gettingstarted'这样的网址..好的..现在只有我才有可能为此创建一个新控制器,然后将所有功能放在索引函数上......但问题是......蛋糕抛出错误,说你的数据库名称中没有表开始
  • 不不,你完全错了。您可以使用我在答案中给您的路线制作类似“etc/gettingstarted”的网址。我不建议用这条新路线替换您在评论中指出的路线。您可以在登录后重定向到“入门”页面,这与路由无关,是您在登录操作中放置的简单重定向。请不要创建 GettingStartedController,我求求你
  • 哈哈好吧对不起Nunser ...那么假设我用你的代码替换我的代码..然后当我输入网址www.web.com .. cakephp 知道我必须去找用户控制器,其中有一个函数名称 index(),我必须在其中显示登录页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多