Bij*_*oor 4 laravel laravel-routing laravel-5
我有一个名为Article.php的Model Class, 并使用下面的rout:
Route::get('articles/create','ArticlesController@create');
Run Code Online (Sandbox Code Playgroud)
当在浏览器中输入http:// localhost:8000/articles/create时, 我看到此错误: Builder.php第125行中的ModelNotFoundException:模型[App\Article]没有查询结果.
但是当我用户下面的每一个想法都没问题时:(文章放入文章s)
Route::get('article/create','ArticlesController@create');
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
class ArticlesController extends Controller {
public function index()
{
$articles = Article::all();
return view('articles.index',compact('articles'));
}
public function show($id)
{
$article = Article::findOrFail($id);
return view('articles.show',compact('article'));
}
public function create()
{
return view('articles.create');
}
}
Run Code Online (Sandbox Code Playgroud)
真的发生了什么?!!!
Aze*_*ame 13
你的代码的问题是你的routes.php你的路由优先级是这样的:
Route::get('articles/{id}','ArticlesController@show');
Route::get('articles/create','ArticlesController@create');
Run Code Online (Sandbox Code Playgroud)
当你在浏览器中访问http:// localhost:8000/articles/create时,la lavel catches创建一个带{id}请求的变量,articles/{id}然后才有articles/create机会解析路由.要解决您的问题,您必须考虑路由优先级并对route.php文件进行以下更改:
Route::get('articles/create','ArticlesController@create');
Route::get('articles/{id}/edit','ArticlesController@show');
Route::get('articles/{id}','ArticlesController@show');
Run Code Online (Sandbox Code Playgroud)
但是如果你在routes.php文件中有很多这些,你应该考虑使用它:
Route::resource('articles', 'ArticlesController');
Run Code Online (Sandbox Code Playgroud)
这一行将处理所有4个获取路由(索引,创建,编辑,显示)以及(存储,更新,删除)的所有三个发布/放置/删除路由.
但是每个人都有自己的.
| 归档时间: |
|
| 查看次数: |
3257 次 |
| 最近记录: |