繁体   English   中英

CakePHP默认路由参数

[英]CakePHP default route parameter

我在CakePHP中路由存在问题。 我想将参数传递给路由,但是此参数需要具有默认值。 我的路线:

$routes->connect('/exchangeOffer/add/:type', ['controller' => 'Offer', 'action' => 'add'], ['pass' => ['type'], 'type' => '(NORMAL|AUTO)']);

当我转到以下地址之一时,此路线仅起作用:

http:// domain / exchangeOffer / add / NORMAL

http:// domain / exchangeOffer / add / AUTO

但我希望它与地址一起使用

http:// domain / exchangeOffer / add

然后将默认类型参数传递为NORMAL。
我知道在Zend Framework中这样的事情是可能的,但是我在CakePHP中是一个全新的人,并且找不到做到这一点的方法(通过许多帖子和答案,不仅在这里,但没有一个帮助)。

如果要在路由级别解决此问题,则必须添加未设置:type route元素集的附加路由,并在默认数组中传递默认type参数,例如

$routes->connect(
    '/exchangeOffer/add/:type',
    [
        'controller' => 'Offer',
        'action' => 'add'
    ],
    [
        'pass' => ['type'],
        'type' => '(NORMAL|AUTO)'
    ]
);

$routes->connect(
    '/exchangeOffer/add',
    [
        'controller' => 'Offer',
        'action' => 'add',
        'type' => 'NORMAL'
    ],
    [
        'pass' => ['type']
    ]
);

而且,如果您希望能够在不定义类型的情况下生成URL(例如,通过Router::url() ),则必须添加(附加-顺序重要)第三条规则,而无需涉及任何类型

$routes->connect(
    '/exchangeOffer/add',
    [
        'controller' => 'Offer',
        'action' => 'add'
    ]
);

也可以看看

如果您不需要执行该动作,则只需输入Controller,cakephp将在controller中选择默认动作(它将是index),例如:

Router::connect(
    '/add/*', array('controller' => 'users','action' => 'index' )
);

每当您访问http://domain.com/add/some-thing.htmlhttp://domain.com/add时 ,系统都会调用控制器USERS并执行INDEX操作

希望对你有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM