【问题标题】:Cakephp - I want to allow a user to create his own page, the url of which would be his nameCakephp - 我想允许用户创建自己的页面,其 url 将是他的名字
【发布时间】:2011-08-08 02:41:21
【问题描述】:

我正在尝试创建一个允许用户创建帐户然后创建自己的页面的应用程序。

我想使用用户名字和姓氏的组合作为他们页面的 url,即 mywebsite.com/john_smith

显然我需要创建一个具有适当操作的控制器,但我该如何让它具有我想要的 url?

顺便说一句,我已经通读了很多次手册(所有关于路线的东西,尤其是关于路线的东西)并阅读了大量的教程和几本书,但我没有遇到任何可以准确解释这一点的东西。

任何帮助将不胜感激。

【问题讨论】:

    标签: php url cakephp routing


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      建议在您的用户表中创建新列,例如 url

      users_controller.php 中指定查看功能,这样您就可以通过 url 不通过 id 到达用户页面。

      function view($url = null) {
        if (!$url) {
          $this->Session->setFlash(__('Invalid product', true));
          $this->redirect(array('action' => 'index'));
        }
        $this->set('user', $this->User->find('first',array('conditions'=>array('User.url' => $url))));
      }
      

      routes.php

      Router::connect('/*', array('controller' => 'users', 'action' => 'view')); 
      

      但是,如果您使用其他控制器,这可能会导致问题。所以我正在使用这样的东西:

      $usersModel = ClassRegistry::init('User');
      $users = $usersModel->find('all');    
      foreach($users as $user){
        Router::connect('/'.$user['User']['url'], array('controller' => 'users', 'action' => 'view',$user['User']['url']));
      } 
      

      我处理过类似的问题,所以你可以查看我的问题。

      【讨论】:

      • 感谢您的信息。希望这是我需要的。但是有一个问题,如果我有数百甚至数千个用户,这不会创建大量的路由指令吗?如果是这样,这会产生任何问题吗? -- 抱歉,如果这是一个新手问题
      • 两周前我也开始使用 CakePHP,所以我很难给出一些建议,但在我的帖子中没有人知道更好的解决方案。这个更干净Router::connect('/*', array('controller' => 'users', 'action' => 'view'));,但您还需要为所有其他控制器和所有操作添加路由。顺便说一句,如果有人正确回答了您的问题并且对您有所帮助,那么最好将此问题设置为已解决。
      • 再次为新手感到抱歉:我理解您使用 foreach 循环的路由器想法,它对每个用户 url 都有一个规则,并且规则说 - 如果 url 有 /john_smith 然后发送给用户::以 john_smith 作为参数查看。继续下一条评论
      • 但是...我不明白 Router::connect('/*', array('controller' => 'users', 'action' => 'view'));这不是说向 users::view 发送任何 url 吗?顺便说一句,我对 php 也有点陌生,发现事情很艰难
      • 正如您所写的那样,这就是为什么您需要指定所有其他控制器及其所有操作,以便应用程序正常工作。你一定要检查我的老问题,它可能会向你澄清这一点。
      猜你喜欢
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多