1

所以我正在做一个 Silex 项目,它是一个支票簿登记簿。这个想法是账户有交易。我正在使用拥有控制器提供程序的方法,因此我正在安装提供程序。我很清楚,我可以为各自的控制器提供者挂载 /accounts 和 /transactions 。然而,由于逻辑上的交易是账户的孩子,我希望实现这种类型的 URL 结构:

/account/1= 获取帐户 ID 1 的请求

/account/1/transaction/100= 获取交易 ID 100 的请求,包括账户 ID 1 作为参数

提前致谢。

编辑:我没有提到我的控制器设置如下所示:

引导程序.php:

$app->mount('/account', new AccountControllerProvider());
$app->mount('/transaction', new TransactionControllerProvider());

AccountControllerProvider.php:

$controllers->put('/', 'Mogaard\Checkbook\Controller\AccountController::createAction')
    ->bind('account_create');
$controllers->get('/{account}', 'Mogaard\Checkbook\Controller\AccountController::displayAction')
    ->convert('account', $accountProvider)
    ->bind('account_display');
$controllers->post('/{account}', 'Mogaard\Checkbook\Controller\AccountController::saveAction')
    ->convert('account', $accountProvider)
    ->bind('account_save');
$controllers->delete('/{account}', 'Mogaard\Checkbook\Controller\AccountController::deleteAction')
    ->convert('account', $accountProvider)
    ->bind('account_delete');

TransactionControllerProvider.php:

$controllers->put('/', 'Mogaard\Checkbook\Controller\TransactionController::createAction')
    ->bind('transaction_create');
$controllers->post('/{transaction}', 'Mogaard\Checkbook\Controller\TransactionController::saveAction')
    ->convert('transaction', $transactionProvider)
    ->bind('transaction_save');
$controllers->delete('/{transaction}', 'Mogaard\Checkbook\Controller\TransactionController::deleteAction')
    ->convert('transaction', $transactionProvider)
    ->bind('transaction_delete');

我希望为 /account/{account}/transaction/{transaction} 添加一个路由,但我不确定如何使用已安装的控制器提供程序来完成它,并且没有将事务控制器职责混合到帐户控制器提供程序中。

4

1 回答 1

4

正如 Igorw 所建议的,我将把它作为答案发布(以防万一发帖者没有阅读评论):

我可能不太习惯silex,但你试过吗

$app->get('/account/{accId}/transaction/{transId}'...)?

编辑:

跟踪该路线后,您可以转发 /account/{accId}/transaction/{transId}/transaction/account/$accId/transaction/$transId. 就像 an 一样,.htaccess它将对用户不可见。或者甚至使用 将.htaccess这些路线映射到最适合您的路线。

于 2012-10-24T13:33:03.713 回答