gpt4 book ai didi

php - CakePHP 中的变量前缀路由

转载 作者:行者123 更新时间:2023-12-04 05:39:21 25 4
gpt4 key购买 nike

我正在用 CakePHP 创建一个应用程序,它要求我在一个 CakePHP 安装中运行“多个”应用程序。就像我有 n 个 Controller 对所有应用程序的行为都相同,但它们仅在我调用数据库时有所不同 - 无论如何,我需要创建一个行为如下的路由:

/app1/ Controller / Action /a/b/c

/app2/ Controller / Action /a/b/c

(其中 app1app2 是可以更改为任何内容的字母数字字符串)

这将被路由到类似的东西:
/controller/action/app1/a/b/c(或同样适用于 app2,依此类推)

路由路由可能只是 /controller/action/a/b/c也是,但我需要有办法访问 app1/app2 Controller 内的 URL 部分(用于 Controller 内的进一步处理)。有没有办法在 CakePHP 中做到这一点?谢谢。

稍微相关的问题:完成上述操作后,有没有办法设置“默认”应用程序名称(例如,当我尝试访问 /controller/action/a/b/c 时,它将自动路由到相当于输入 /global/controller/action/a/b/c 的位置?)

谢谢!

有效:我想要的只是使用路由(或任何其他可以做到这一点的 CakePHP“方法”)来处理像 /foobar/controller/action/the/rest 这样的 URL。至 /controller/action/the/rest并以某种方式将“foobar”传递给 Controller ​​。 “Foobar”是任何字母数字字符串。

最佳答案

app/Config/routes.php添加:

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

这将传递 app 的值作为 Controller 中操作的第一个参数。因此,在您的 Controller 中,您将执行以下操作:
class FoosController Extends AppController {
public function view_something($app, $a, $b, $c) {
// ...
}
}

当您要求时 /myApp1/foos/view_something/1/2/3 $app 的值将是 'myApp1'$a的值将是 1

连接其他路由, 之前 以上,您可以添加类似的内容:
Router::connect(
'/pages/:action/*',
array( 'app' => 'global', 'controller' => 'pages' ),
array( 'pass' => array( 'app' )) // to make app 1st arg in controller
);

关于php - CakePHP 中的变量前缀路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com