控制器返回application / json而不是view

时间:2017-07-24 16:20:02

标签: php laravel blade laravel-routing

我有一个非常奇怪的问题。我可以访问该页面,一切都很好,直到我在 web.php 路由文件中添加了一些新路由。问题在于第5条路线(名为 post.create )。 **只是为了突出我所说的线路/路线:

Route::group(['prefix'=>'admin', 'middleware'=>'auth'], function()
{
Route::get('home', 'HomeController@index')->name('admin.home');

Route::get('post/all','PostsController@index')->name("post.all");

Route::get('post/{id?}','PostsController@show')->name('post.fetch');

**Route::get('post/create','PostsController@create')->name('post.create');**

Route::post('post/store', 'PostsController@store')->name('post.store');

Route::put('post/{id?}','PostsController@update')->name('post.update');

Route::delete('post/delete/{id}','PostsController@destroy')->name('post.delete');

Route::get('category/create','CategoriesController@create')->name('category.create');

Route::post('category/store','CategoriesController@store')->name('category.store');

Route::get('category/all','CategoriesController@index')->name('category.all');

Route::get('category/{id?}','CategoriesController@show')->name('category.fetch');

Route::delete('category/delete/{id}','CategoriesController@destroy')->name('category.delete');

Route::put('category/{id}','CategoriesController@update')->name('category.update');
});

当我访问这条路线时,我得到一个只有一对花括号的空白页,没有别的。浏览器控制台上有一条消息说 - 资源被解释为文档,但是使用MIME类型application / json 进行传输。

但如果我改变路线

Route::get('posts/create','PostsController@create')->name('post.create');

,只需添加额外的 s ,即可获得该页面的完整视图。

我似乎无法弄清楚为什么早期路由发送回应用程序/ json(似乎是一个空对象)。我没有改变控制器功能。以下是PostsController @ create函数的代码:

public function create()
{
    $categories = Category::all();
    return view('admin.posts.create', compact('categories'));
}

我试图为此路线从此函数返回不同的视图或简单字符串。似乎没什么用。

我做错了什么,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您应将Blade文件命名为:

.blade.php
  

Blade视图文件使用resources/views文件扩展名,通常存储在'post/{id?}'目录

https://laravel.com/docs/5.4/blade#introduction

<强>更新

在评论中,我建议您在path[floor]之前移动路线。

答案 1 :(得分:1)

Laravel将根据您定义的顺序提供匹配的第一条路线。由于您首先post.fetch使用&#39;创建&#39;作为id参数。

在您的路线文件中post.create post.fetch之前,您可以:

Route::get('post/create','PostsController@create')->name('post.create');

Route::get('post/{id?}','PostsController@show')->name('post.fetch');

Route::post('post/store', 'PostsController@store')->name('post.store');

Route::put('post/{id?}','PostsController@update')->name('post.update');