Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp——我想允许用户创建自己的页面,其url将是他的名字_Php_Url_Cakephp_Routing - Fatal编程技术网

Cakephp——我想允许用户创建自己的页面,其url将是他的名字

Cakephp——我想允许用户创建自己的页面,其url将是他的名字,php,url,cakephp,routing,Php,Url,Cakephp,Routing,我正在尝试创建一个应用程序,允许用户创建一个帐户,然后创建自己的页面 我想使用用户名和姓氏的组合作为他们页面的url,即mywebsite.com/john_smith 显然,我需要创建一个具有适当操作的控制器,但是如何使它具有我想要的url呢 顺便说一句,我已经阅读了很多次手册(所有关于路线esp的内容),阅读了大量的教程和几本书,但我没有看到任何东西能准确地解释这一点 任何帮助都将不胜感激。请检查建议在用户表中创建新列,例如url 在users\u controller.php中指定查看函数

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

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

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

顺便说一句,我已经阅读了很多次手册(所有关于路线esp的内容),阅读了大量的教程和几本书,但我没有看到任何东西能准确地解释这一点


任何帮助都将不胜感激。

请检查建议在用户表中创建新列,例如url

users\u 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,则发送给用户::view,并使用john_smith作为参数。下节继续,但是。。。我不理解路由器::connect('/*',array('controller'=>'users','action'=>'view');这不是说向users::view发送任何url吗?顺便说一句,我对php也有点陌生,我发现它和您写的一模一样,这就是为什么您需要指定所有其他控制器及其所有操作,以便应用程序能够正常工作。你一定要检查我的老问题,它可能会向你澄清这一点。