簡體   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