Обновление с CakePHP 1.2 до 1.3 нарушило мои маршруты, хотя они должны быть совместимы с 1.3 - PullRequest
0 голосов
/ 02 сентября 2011

Я обновлял CakePHP с 1.2.10 до 1.3.11, используя « Миграция с CakePHP 1.2 до 1.3 », и я знаю, что должен убедиться, что мои маршруты совместимы с 1.3.

Однако мои маршруты не делают ничего несовместимого:

Это больше не поддерживается, поскольку жадные звезды в середине маршрута ведут себя хаотично и усложняют компиляцию маршрутов.За пределами этих двух особенностей пограничного случая и вышеуказанных изменений маршрутизатор ведет себя точно так же, как и в 1.2

Другой крайний случай:

Первые сегменты пути, использующие полныйрегулярные выражения были удалены.

Как ведут себя мои маршруты:

  • При открытии домашней страницы не работает , однако на 1.2 он успешно соответствует маршруту# 1 (решено Ivo)
  • / lv / products * не работает *.Должен совпадать с # 6 с использованием контроллера «Products» и действия по умолчанию «index», но считает, что «lv» является контроллером (игнорируя параметр: lang)
  • / lv / products / index работает!
  • / lv / products / view / productname works!

Cake выдает ошибки, подобные этой ошибке (копируется при открытии / lv /продукты :

Missing Controller
Error: LvController could not be found.
Error: Create the class LvController below in file: app\controllers\lv_controller.php
<?php
class LvController extends AppController {

    var $name = 'Lv';
}
?>

Мои маршруты:

    //Route #1: This route should have worked as a root route, because we have a default for :lang. But now i cannot open up the homepage if i don't define explicit "/" route
    Router::connect("/:lang/",
        array("controller" => "start", "lang" => "lv"),
        array("lang" => "[a-z]{2}")
    );

    //#2 This route seems to work ok.
    Router::connect("/admin/:lang/:controller/:action/*",
        array("lang" => "lv", "admin" => true),
        array("lang" => "[a-z]{2}")
    );

    // ==============================================================================

    //#3 Routes with static parts - works
    Router::connect("/:lang/info/*",
        array("controller" => "sections", "action" => "view", "lang" => "lv"),
        array("lang" => "[a-z]{2}")
    );

    //#4
    Router::connect("/:lang/news",
        array("controller" => "news", "action" => "listall", "lang" => "lv"),
        array("lang" => "[a-z]{2}")
    );

    //#5
    Router::connect("/:lang/employees",
        array("controller" => "employees", "action" => "index", "lang" => "lv"),
        array("lang" => "[a-z]{2}")
    );

    // ==============================================================================


    //#6 Catch all route. 
    Router::connect("/:lang/:controller/:action/*",
        array("lang" => "lv"),
        array("lang" => "[a-z]{2}")
    );

Спасибо за любую помощь.

1 Ответ

1 голос
/ 02 сентября 2011

Для корня по умолчанию, я думаю, вы хотите, чтобы '/' или '/<param>'

'/:lang/' ожидали, что что-то будет для lang - это не обязательно, афаик.Попробуйте '/:lang' вместо.

...