URL-адрес имени пользователя CakePHP с использованием Regex?

Я нашел здесь комментарий: http://bakery.cakephp.org/articles/PHPdiddy/2006/10/ 06 / custom-urls-from-the-site-root

Тем не менее:

Просто измените последнюю строку.
Router :: connect ('/ ', array ('контроллер' => 'члены', 'действие' => 'показать'));
на
Router :: connect ('(?! Admin | items | images) (.
*)', array ('controller' => 'members', 'action' => 'show'));

Некоторым людям удалось заставить это работать ... Мне это показалось не совсем правильным, поэтому я попробовал следующее, но все равно не повезло:

Router::connect('(?!/admin|/items|/images)(/.*)',
array('controller' => 'members','action' => 'show'));

В любом случае цель состоит в том, чтобы URL-адрес типа http: // имя домена / имя пользователя отображался на уникальный идентификатор пользователя. Он работает с / *, но я предпочитаю не использовать этот метод. Идеи?

Обновление решения: Я использовал выбранный ниже ответ и добавил следующее. Это может быть полезно кому-то еще.

$misc = array(*your misc webroot, admin route items here...*);
$notList = array_merge(Configure::listObjects('plugin'),Configure::listObjects('controller'));
$notListLowerCase = array();
foreach ($notList as $key=>$item):
    $notListLowerCase[] = strtolower(preg_replace("/(.)([A-Z])/","\\1_\\2",$item));
endforeach;
$notList = array_merge($notList,$misc,$notListLowerCase);
$notList = implode('|', $notList);

Router::connect('/:username', 
        array(
            'controller'=>'users', 
            'action'=>'view'
        ),   
        array(
            'username' => '\b(?:(?!'.$notList.')\w)+\b'
        )
    );

5
задан Parris 23 April 2011 в 22:04
поделиться