2016-04-03 220 views
0

我想不通,为什么我使用Laravel route()函数生成的链接看起来不像我想要的。Laravel路由问题

这里是我的routes.php文件的行代码

Route::get('/market/announcements/show/{period}/{date}', array('as' => 'market.announcements.index', 'uses' => '[email protected]')); 
Route::get('/market/announcements/history', array('as' => 'market.announcements.history', 'uses' => '[email protected]')); 
Route::resource('market/announcements', 'AnnouncementsController'); 

这是我如何生成的链接:

route('market.announcements.index', ['period' => $key, 'date' => $link]) 

不幸的是,生成的链接是: 市场/公告期间=年& date = 2016

取而代之: market/announcements/show/year/2016

回答

0

这是因为

Route::resource('market/announcements', 'AnnouncementsController'); 

覆盖路线

Route::get('/market/announcements/show/{period}/{date}', array('as' => 'market.announcements.index', 'uses' => '[email protected]')); 

如果您想运行php artisan route:list你会看到

 
+-----------+-------------------------------------------+------------------------------+ 
| Method | URI          | Name       | 
+-----------+-------------------------------------------+------------------------------+ 
| POST  | market/announcements      | market.announcements.store | 
| GET|HEAD | market/announcements      | market.announcements.index | 
| GET|HEAD | market/announcements/create    | market.announcements.create | 
| GET|HEAD | market/announcements/history    | market.announcements.history | 
| GET|HEAD | market/announcements/show/{period}/{date} | market.announcements.index | 
| GET|HEAD | market/announcements/{announcements}  | market.announcements.show | 
| PUT|PATCH | market/announcements/{announcements}  | market.announcements.update | 
| DELETE | market/announcements/{announcements}  | market.announcements.destroy | 
| GET|HEAD | market/announcements/{announcements}/edit | market.announcements.edit | 

market.announcements.index列出了两次? Router走最后一个。

现在,如果你注释掉路径文件的资源片刻

// Route::resource('market/announcements', 'AnnouncementsController'); 

,并会尝试在tinker你会看到你的路线现在可以按预期

 
$ php artisan tinker 
Psy Shell v0.7.2 (PHP 5.6.19 — cli) by Justin Hileman 
>>> route('market.announcements.index', ['period' => 'year', 'date' => 2016]); 
=> "http://localhost/market/announcements/show/year/2016" 
+0

AA感谢。我已经改变了顺序,现在它工作:) –