2012-10-20 2 views
1

그래서 저는 수표 책 레지스터 인 Silex 프로젝트를 진행하고 있습니다. 계정에 거래가 있다는 아이디어가 있습니다. 컨트롤러 공급자를 사용하는 방식을 사용하고 있으므로 공급자를 탑재하고 있습니다. 각 컨트롤러 공급자에 대한/accounts 및/transaction을 마운트 할 수 있다는 것은 분명합니다. 논리적 때문에 거래는하지만, 내가 URL 구조의이 유형을 달성하기 바라고, 계정의 자녀 :silex에 "sub-controllers"를 어떻게 마운트 할 수 있습니까?

/account/1 = 계정 ID에 대한 요청을 얻을 1

/account/1/transaction/100 = 계정 ID 1을 포함하여 트랜잭션 ID (100)에 대한 요청을받을 매개 변수로

미리 감사드립니다.

편집 : 나는 내 컨트롤러 설정이 보이는 언급하는 데 실패 등 :

bootstrap.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}에 대한 경로를 추가하려고하지만 탑재 된 컨트롤러 공급자를 사용하거나 트랜잭션 컨트롤러 책임을 계정 컨트롤러 공급자와 섞지 않고 수행하는 방법을 잘 모릅니다.

+3

나는 silex에 너무 익숙하지 않을 수도 있지만'$ app-> get ('/ account/{accId}/transaction/{transId}') '을 시도 했습니까? – Korcholis

+1

@ Korcholis 답변으로 게시해야합니다. ;-) – igorw

+0

@Igorw 이것은 다소 재현하기에는 어색하지만 어쨌든 ... – Korcholis

답변

4

Igorw에 의해 제안, 난 그냥 대답으로이 게재됩니다 (경우에 대비 포스터는 코멘트를 읽어 보지 않았) :

너무 렉스에 사용되지 않을 수 있습니다,하지만 당신은

을 시도

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

편집 : 당신이 그 경로를 추적하면

, 그럴 수 단지 forward/account/{accId}/transaction/{transId}/transaction/account/$accId/transaction/$transId합니다. .htaccess처럼 사용자에게는 보이지 않습니다. 또는 .htaccess을 사용하여 이러한 경로를 가장 적합한 경로로 매핑 할 수도 있습니다.

+0

좋은 제안이지만/account에 내 계정 컨트롤러 공급자가 마운트되어 있고/transaction에 설치된 트랜잭션 컨트롤러 공급자가 있습니다. 나는 원래 질문에서 이것을 언급하지 않았기 때문에 사과드립니다. 나는 그것을 추가 할 것이다. 따라서이 제안 된 솔루션의 문제점은/account/{accId}/transaction/{transId}를 사용하려고하면 해당 경로 분기에 공급자를 탑재했기 때문에/transaction 앞에 추가되어/transaction/계정/{accId}/거래/{transId}. 그래도 제안 해 주셔서 감사합니다. – Moismyname

+2

/거래/계정/$ accId /로/거래/{transId}'(http://silex.sensiolabs.org/doc/usage.html#forwards)'/ account/{accId}/거래/거래/$ transId'. .htaccess가하는 것처럼 사용자에게는 보이지 않습니다. 또는 .htaccess를 사용하여 이러한 경로를 가장 적합한 경로로 매핑 할 수도 있습니다. – Korcholis

+0

아, 네. 나는 앞으로가 나를 위해 여기에서 움직일 것이다라고 생각한다.나는 Silex 문서에서 이것을 놓쳤다는 것을 믿을 수 없다. 너희들 시간 낭비해서 미안해. 도움을 많이 주셔서 감사합니다. 코 콜리스 (Korcholis),이 질문에 답을 수정하거나 새 질문을 올리면 받아 들일 수있는 것으로 표기하여 신용을 얻을 수 있습니다. 다시 한번 감사드립니다. – Moismyname

관련 문제