在 Laravel 4 安装中,使用Jeffrey Way 的 Laravel 4 Generators,我使用他示例中的脚手架命令设置了一个“推文”资源:
php artisan generate:scaffold tweet --fields="author:string, body:text"
这为推文类型生成了模型、视图、控制器、迁移和路由信息。迁移数据库后,访问http://localhost:8000/tweets
工作正常,并显示预期的内容。
此时文件的内容routes.php
为:
Route::resource('tweets', 'TweetsController');
现在我想将 urltweets
向上移动一级到admin/tweets
,所以上面的 url 应该变成:http://localhost:8000/admin/tweets
。请注意,我没有将“管理员”视为一种资源,而只是出于假设的组织目的而添加它。
将 routes.php 文件更改为:
Route::resource('admin/tweets', 'TweetsController');
不起作用,并显示以下错误:
无法为命名路由“tweets.create”生成 URL,因为这样的路由不存在。
使用以下内容时类似:
Route::group(array('prefix' => 'admin'), function() {
Route::resource('tweets', 'TweetsController');
});
正如这个 stackoverflow question中所建议的那样。
使用php artisan routes
显示命名路由现在也有admin
前缀,tweets.create
变成admin.tweets.create
.
为什么错误说它找不到tweets.create
?不应该自动解决(根据路由表判断)使用admin.tweets.create
吗?
如何更改路由以使此错误不再发生?