如何从mojolicious中获取路由中的默认数据?

时间:2015-02-26 21:54:55

标签: perl routing mojolicious

我想创建一些受角色限制的路线。像这样:

my $auth = $app->routes->under->to('auth#check');
$auth->get('/list')->to('some#list')->name('list');
$auth->get('/add')->to('some#add', roles => ['user', 'admin'])->name('add');

我在roles挂钩中检查after_dispatch时没有任何问题。但是当我试图为这条路线创建链接时,我无法访问这些数据。

例如,我在guest路线上/list并希望形成包含可用链接的菜单。因此,我必须检查路由roles中的/add以决定是否显示此链接。

目前我发现只有一种方法可以从名称为

的路线获取默认数据
 app->routes->lookup('add')->pattern->defaults->{roles}

它看起来像一个黑客。我怎么能以正确的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

你是对的。获取路径默认值的此方法记录为here

import Foundation
import UIKit

class Menu: UIView{

    func setupView(controller: ViewController, width: CGFloat, height: CGFloat){

        let newGame = UIButton(frame: CGRect(x: controller.view.center.x, y: 300, width: width, height: height))
        newGame.center = CGPoint(x: controller.view.center.x, y: 300)
        newGame.setTitle("New Game", for: .normal)
        newGame.backgroundColor = UIColor.gray
        newGame.titleLabel?.font = UIFont(name: "Helvetica", size: 42)
        newGame.setTitleColor(UIColor.black, for: .normal)
        newGame.addTarget(self, action: #selector(Menu.newGame), for: .touchUpInside)
        self.addSubview(newGame)

    }
    func newGame(){
        print("New Game")

    }
}