首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP路径在1.3试图定义一个额外的化妆品参数要包括的路由?

CakePHP路径在1.3试图定义一个额外的化妆品参数要包括的路由?
EN

Stack Overflow用户
提问于 2011-10-12 09:51:39
回答 2查看 1.1K关注 0票数 2

例如,我的URL及其相应的操作,将类似于:

(A)对于company_id属于公司=百事的用户

代码语言:javascript
复制
/pepsi/ - controller - users, action - dashboard (their Auth->user 'company_id' will be used and their user->id)

/pepsi/companies/view - controller - companies, action - view
/pepsi/users/ - controller - users, action - index (trailing slash preferably optional)
/pepsi/users/dashboard - controller - users, action - dashboard

( 1) b:对于company_id属于公司=可口可乐的用户

代码语言:javascript
复制
/coke/ - controller - users, action - dashboard
/coke/companies/view - controller - companies, action - view
/coke/users/ - controller - users, action - index (trailing slash preferably optional)
/coke/users/dashboard - controller - users, action - dashboard

2)对于管理员,它使用路由前缀adminperson

代码语言:javascript
复制
/adminperson/users - controller - users, action - index
/adminperson/users/view/3 - controller - users, action - view , id = 3
/adminperson/companies/delete/6 - controller - companies, action - delete Id = 6

3)同样重要的是,当用户未登录时,也有公共页面。/ contents / view /3 -控制器-内容、操作视图和id =3

下面是我到目前为止所得到的最好的结果,但它总是要求将动作索引显式地写入URL --但实际上,我想这并不是Html->链接助手应该产生的问题。我很高兴与助手建立我所有的联系,因为我通常这样做。

最佳尝试:

代码语言:javascript
复制
Router::connect('/:companyslug/:controller/:action', array('controller' => 'companies', 'action'=>'index', 'companyslug'=>'test'));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-12 17:52:48

我有一个类似的设置,除了我正在跟踪路径的第一部分,以确定哪些记录显示。这是我的设置,其中":app“代替了您所称的":companyslug":

代码语言:javascript
复制
$app_names = "app1|app2|test_app"; // In real code these are pulled from a model

Router::connect(
    '/:app/:controller/:action/*', 
    array( ), 
    array(
        'persist'=>array('app'),
        'app'=>$app_names
    )
);

Router::connect(
    '/:app/:controller', 
    array('action'=>'index'), 
    array(
        'persist'=>array('app'),
        'app'=>$app_names
    )
);

Router::connect(
    '/:app', 
    array('controller'=> 'pages', 'action'=>'display', 'home'), 
    array(
        'persist'=>array('app'),
        'app'=>$app_names
    )
);

// Allow non-app specific access. (I have disabled the default CakePHP routes.)
Router::connect('/:controller', array('action' => 'index'));
Router::connect('/:controller/:action/*');

注意:这是来自Cake2.0RC3,但我认为它应该在1.3中同样工作。

通过这种方式,您可以在控制器中检索app的值(在request参数下),并确保它们在正确的URL中(在您的情况下,确保company_id = companyslug )。

一个棘手的问题是“持久化”选项,这意味着您总是需要使用Helper的链接函数来维护URL中的正确前缀。

票数 2
EN

Stack Overflow用户

发布于 2011-10-12 13:19:07

你可以在路线上使用Regex,比如-

代码语言:javascript
复制
Router::connect('/:companyslug/:controller/:action', array('controller' => 'companies', 'action'=>'index'),  array('companyslug'=>'[A-Za-z0-9_\-]*'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7738211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档