我切换到Laravel 5.0并尝试自我介绍。
我有一个让我困惑的小问题:
我使用两个Controller类。第一个工作正常,但第二个被忽略。有人可以告诉我为什么吗?
routes.php文件
<div class="tags-hover-container" ng-show="tag.tagsHoverDisplay">
<div class="tag-info-padding">
<div class="tweets" ng-hide="!tag.quantity">
<div class="percentage" ng-hide="tag.length">
{{tag.tweet_percentage}}%
</div>
<div class="tweet-count">{{tag.quantity}} tweets</div>
</div>
<div class="tweets-direction" ng-show="!tag.quantity">
0 tweets
</div>
</div>
</div>
IndexController.php
<?php
Route::controller('/', 'IndexController');
Route::controller('/rezeptliste', 'RecipelistController');
RecipelistController
<?php namespace App\Http\Controllers;
class IndexController extends Controller {
public function getIndex() {
return view('index');
}
}
当我访问/它完美无缺。当我尝试访问/ rezeptliste时,我收到以下错误:
<?php namespace App\Http\Controllers;
class RecipelistController extends Controller {
public function getIndex() {
return view('recipelist');
}
}
答案 0 :(得分:4)
这里的问题是Laravel路线按列出的顺序进行评估。
这意味着,由于您的第一条路线'/'
也匹配路线/rezeptliste
,因此laravel会转到IndexController
并寻找名为“rezeptliste”的方法。
相反,您的路线应按此顺序排序:
<?php
Route::controller('/rezeptliste', 'RecipelistController');
Route::controller('/', 'IndexController');
这样,/rezeptliste
的专用网址将首先被“捕获”并发送到RecipelistController
,而不是被IndexController路由捕获。
答案 1 :(得分:0)
请参阅the docs
向资源控制器添加其他路由部分如果您需要向资源控制器添加超出默认资源路由的其他路由,则应在调用Route :: resource之前定义这些路由:
Route::get('photos/popular', 'PhotoController@method');
Route::resource('photos', 'PhotoController');
答案 2 :(得分:0)
如果你使用Route:controller(),那么你也必须在控制器方法中提到请求类型。像这样
class UserController extends Controller{
public function getUserinfo(){
//
}
public function postNewuser(){
//
}
}
因此,路线可以轻松识别您的请求方法。
现在您可以配置路线
Route::controller('user','UserController');
我认为它会正常工作