CakePHP Router со слагом и языком - PullRequest
0 голосов
/ 30 января 2012

Я немного в тупике, пытаясь уложить свои маршруты в CakePHP.Я читаю почти каждую статью в Интернете, и некоторые из них близки к тому, что мне нужно, но в сочетании с другими не работают, как ожидалось.Также пробовал некоторые роутеры lib-s, но те же

Вот что мне нужно:

Оба языковых параметра в URL и кусок страниц.Итак:

для внешнего интерфейса

каталог '/' должен вести к языку по умолчанию, controller => pages, slug => home

/: lang - то же, что и выше, но с выбранным языком

/: slug - controller => pages, action => index и передать параметр :slug с языком по умолчанию

/: lang /: slug - то же, что и выше с установленным параметром lang

/: controller /:slug -

/: lang /: controller /: slug - то же, что и выше с установленным параметром lang

  • Мне не нужны никакие action -s в этих ссылках

для панели администратора

/ admin - 'controller' => 'settings', 'action' => 'index'

/ admin /: controller /: action / .... это значение по умолчанию

  • нет необходимости указывать параметр языка в URL-адресе администратора, но действия существуют, кромеИндекс действий

Также, как я должен создать ссылки внутри представления, так чтодолжны работать как надо?

1 Ответ

1 голос
/ 30 января 2012
    Router::connect("/admin", array('action' => 'index', 'controller' => 'settings', 'prefix' => 'admin', 'admin' => true));
    Router::connect("/admin/:controller", array('action' => 'index', 'prefix' => 'admin', 'admin' => true));
    Router::connect("/admin/:controller/:action/*", array('prefix' => 'admin', 'admin' => true));

    Router::connect("/:language/*", array('action' => 'home', 'controller' => 'pages'));
    Router::connect("/:language/:controller", array('action' => 'index'));
    Router::connect("/:language/:controller/*");

Вы можете скопировать второй набор маршрутов, но изменив: language на slug, вы должны поместить его в if и проверить указанный язык, если он не проверяет, загрузить маршруты slug.

...