CakePHP Routing help - PullRequest
       1

CakePHP Routing help

0 голосов
/ 02 апреля 2011

Я хочу, чтобы мой /pages/about стал просто `/ about

. Я попытался сделать это с маршрутизацией в rout.php, но не смог заставить его работать, например, Router::connect('/pages/about', array('controller' => 'pages', 'action' => 'display'));

кто-нибудь может помочь?

ТАКЖЕ

для моего контроллера портфеля. У меня сейчас есть работа, похожая на /portfolio/view/102, но я хотел бы показать что-то вроде /portfolio/view/Paperview_Magazine-102, где Paperview Magazine - названиесообщение и 102 является идентификатором сообщения.Я посмотрел на Cake Book, но если бы кто-то мог опубликовать какой-нибудь код, который был бы потрясающим.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Чтобы составить маршрут для /about, необходимо составить маршрут для /about, а не /pages/about:

Router::connect('/about',
                array('controller' => 'pages', 'action' => 'display', 'about'));

Чтобы использовать такие URL, как /portfolio/view/Paperview_Magazine-102, вы можете использовать стандартные маршруты, но вам придется немного поработать в контроллере:

// PortfolioController
// $identifier == "Paperview_Magazine-102"

public function view($identifier) {
    if (!preg_match('/^(.+)-(\d+)$/', $identifier, $matches)) {
        // $identifier is not in format 'Title-Id'
        $this->cakeError('error404');
    }

    // $matches[1] == Paperview_Magazine
    // $matches[2] == 102

    $post = $this->Portfolio->read(null, $matches[2]);
    $this->set(compact('post'));
}
0 голосов
/ 02 апреля 2011

Может быть, это немного, но в первом случае вы можете попробовать Router :: connect ('/: controller / about', array ('action' => 'display')) ;? Кажется, я помню, что у меня были некоторые похожие проблемы с моими маршрутами, и это, возможно, помогает, хотя я не могу вспомнить, почему.

Что касается второго вопроса, разве вы не можете просто переделать функцию представления, чтобы она принимала параметр $ slug вместо $ id, и найти нужную запись портфолио, выполнив поиск по слагу? Или проверьте, является ли параметр is_numeric, и найдите идентификатор, если он есть, или слаг, если это не так ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...