Ответ 1
Ну, это не задокументировано, поэтому я не уверен, что это намеренно возможно или нет, но я нашел способ сделать эту работу. Обратите внимание, однако, поскольку это недокументированная функция, может означать, что она непреднамеренно, и поэтому может ломаться в будущих версиях игры.
Вы можете добиться того, что хотите, используя следующую строку в файле маршрутов.
%{ if (play.mode.isDev()) }%
Я создал тестовое приложение с несколькими действиями
public class Application extends Controller {
public static void index() {
render();
}
public static void noDev() {
renderText("NoDev");
}
public static void noProd() {
renderText("NoProd");
}
}
Затем я добавил следующее в файл маршрутов
# Home page
GET / Application.index
# Ignore favicon requests
GET /favicon.ico 404
# Map static resources from the /app/public folder to the /public path
GET /public/ staticDir:public
%{ if (play.mode.isDev()) }%
GET /route1 Application.noDev
GET /route2 Application.noDev
GET /route3 Application.noDev
* /{controller}/{action} {controller}.{action}
%{ if (play.mode.isProd()) }%
GET /route4 Application.noProd
GET /route5 Application.noProd
GET /route6 Application.noProd
* /{controller}/{action} {controller}.{action}
Итак, вы можете видеть, что с помощью простого оператора if он будет выполнять следующую группу маршрутов только в этом режиме. Оператор if завершится, когда будет найден следующий оператор if.
Если в режиме Dev вы пытаетесь получить доступ к маршруту4, вы не сможете получить к нему доступ, и вы увидите страницу RouteNotFound, показывающую, что доступные маршруты - это те, которые вы определили только для Dev.