2017-07-24 92 views
1

我有一個非常奇怪的問題。我可以訪問該頁面,一切都很好,直到我在我的web.php路由文件中添加了一些新路由。問題在於第5條路線(名稱爲post.create)。該**只是突出線/路由我說的是:控制器返回應用程序/ json而不是視圖

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

Route::get('post/all','[email protected]')->name("post.all"); 

Route::get('post/{id?}','[email protected]')->name('post.fetch'); 

**Route::get('post/create','[email protected]')->name('post.create');** 

Route::post('post/store', '[email protected]')->name('post.store'); 

Route::put('post/{id?}','[email protected]')->name('post.update'); 

Route::delete('post/delete/{id}','[email protected]')->name('post.delete'); 

Route::get('category/create','[email protected]')->name('category.create'); 

Route::post('category/store','[email protected]')->name('category.store'); 

Route::get('category/all','[email protected]')->name('category.all'); 

Route::get('category/{id?}','[email protected]')->name('category.fetch'); 

Route::delete('category/delete/{id}','[email protected]')->name('category.delete'); 

Route::put('category/{id}','[email protected]')->name('category.update'); 
}); 

當我訪問這條路我得到了一個空白頁面有一對大括號而已,沒別的。瀏覽器控制檯上顯示一條消息 - 將資源解釋爲Document,但是使用MIME類型application/json進行傳輸。

但是,如果我的路線更改爲

Route::get('posts/create','[email protected]')->name('post.create'); 

,這只是增加一個額外的小號,我得到的頁面的完整視圖。

我似乎無法弄清楚爲什麼早期的路由發回應用程序/ JSON(似乎是一個空對象)。我沒有改變控制器的功能。下面是PostsController代碼@創建功能:

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

我試圖從這個函數返回一個不同的視圖或簡單的字符串這條路線。似乎沒有任何工作。

我做錯了什麼,任何人都可以請幫忙嗎?

resources/views/admin/posts/create.blade.php 

刀片視圖文件使用.blade.php文件擴展名通常存儲在resources/views目錄

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

更新

回答

1

Laravel將按照您定義的順序提供匹配的第一條路線。由於您首先擁有post.fetch,因此使用'create'作爲id參數的路線。

在你的路由文件放在post.createpost.fetch,因此,您有:

Route::get('post/create','[email protected]')->name('post.create'); 

Route::get('post/{id?}','[email protected]')->name('post.fetch'); 

Route::post('post/store', '[email protected]')->name('post.store'); 

Route::put('post/{id?}','[email protected]')->name('post.update'); 
+0

@Eric_Tucker:工作。非常感謝解釋。因遇到問題而學習新事物:) –

1

,你應該命名刃文件

在評論中,我建議你在'post/{id?}'之前移動路線。

+0

刀片文件已經命名create.blade.php。正如我所說,如果我在定義中更改路由網址,即使是1個字符,也可以看到相同的頁面。是的,這個文件存儲在resources/views/admin/posts /目錄下! –

+1

試着把這條路線放在''post/{id?}''之一 –

+1

嘿亞歷克斯。謝謝,這是真的。 –

相關問題