Thursday, 15 April 2010

php - Laravel routes error -



php - Laravel routes error -

here 2 routes have:

route::resource('tournament/{tourid}/phase/{phaseid}/bets', 'phasecontroller@getphasebets'); route::resource('tournament/{tourid}/phase/{phaseid}', 'phasecontroller@getphaseinfo');

but getting exception when trying run api:

route pattern "/api/tournament/{tourid}/phase/{phaseid}/{{phaseid}}" cannot reference variable name "phaseid" more once.

from did {{phaseid}} ? why getting error?!

tl;dr:

since defining routes straight pointing controller actions, should using:

route::get('tournament/{tourid}/phase/{phaseid}/bets', 'phasecontroller@getphasebets'); route::get('tournament/{tourid}/phase/{phaseid}', 'phasecontroller@getphaseinfo');

longer version:

to utilize route::resource() should next docs in resource controllers. e.g:

route::resource('phase', 'phasecontroller');

which generate route urls like:

/tournament/{tourid}/phase/{phaseid}/bets /tournament/{tourid}/phase/{phaseid}/bets/{resource_id} /tournament/{tourid}/phase/{phaseid}/bets/{resource_id}/edit /tournament/{tourid}/phase/{phaseid}/bets/create

you see instead of having 1 parameter resource id, routes have 3 parameters. confuses laravel on 1 should utilize resource id.

since defining routes straight pointing controller actions, should using:

route::get('tournament/{tourid}/phase/{phaseid}/bets', 'phasecontroller@getphasebets'); route::get('tournament/{tourid}/phase/{phaseid}', 'phasecontroller@getphaseinfo');

if you'd still utilize resource controllers you'll need alter code this.

route::resource('phase', 'phasecontroller'); route::resource('bet', 'betcontroller');

and in controller files:

phasecontroller.php:

class phasecontroller extends basecontroller { public function show($id) { // original phasecontroller@getphaseinfo() here } }

betcontroller.php:

class betcontroller extends basecontroller { public function show($id) { // original phasecontroller@getphasebets() here } }

and reference urls this:

/phase/your_phase_id /bet/your_bet_id

obviously might not totally suit requirements. if explain little bit of relationships between tournaments, phases, bets, , you're trying achieve, maybe can suggest improve way.

php laravel laravel-4 laravel-routing

No comments:

Post a Comment