0

我在从控制器内重新路由到动态 URL 时遇到了一些困难。

在 routes.ini 中

GET /admin/profiles/patient/@patientId/insert-report = Admin->createReport

在控制器 Admin.php 中,在方法 createReport() 中:

$patientId = $f3->get('PARAMS.patientId');

我的尝试(在 Admin.php 中):

$f3->reroute('admin/profiles/patient/' . echo (string)$patientId . '/insert-report');

问题:如何在不完全更改路由的情况下重新路由到相同的 URL(将显示一些错误消息),即附加 patientId 作为 URL 查询参数?

谢谢,K。

4

1 回答 1

2

echo语句不需要连接字符串:

$f3->reroute('admin/profiles/patient/' . $patientId . '/insert-report');

以下是获得相同结果的其他 3 种方法:

1) 从当前模式构建 URL

(对于使用不同参数重新路由到同一路由很有用)

// controller
$url=$f3->build($f3->PATTERN,['patientId'=>$patientId]);
$f3->reroute($url);

2)重新路由到相同的模式,相同的参数

(对于从 POST/PUT/DELETE 重新路由到相同 URL 的 GET 很有用)

// controller
$f3->reroute();

3) 从命名路由构建 URL

(用于重新路由到不同的路线)

;config file
GET @create_report: /admin/profiles/patient/@patientId/insert-report = Admin->createReport
// controller
$url=$f3->alias('create_report',['patientId'=>$patientId']);
$f3->reroute($url);

或简写语法:

// controller
$f3->reroute(['create_report',['patientId'=>$patientId']]);
于 2017-05-26T09:51:34.523 回答