2017-01-06 104 views
1

首先,我在使用laravel時完全是綠色的,所以請耐心等待:) 問題是,我正在試圖添加一個新的刀片路由到routes.php文件,基本我猜想的東西。Laravel自定義刀片路由問題

例如:

Route::get('testing', array('as' => 'testing', function() 
    { 
     return View::make('testing'); 
    })); 

保存後,我得到這個錯誤:

Fatal error: Uncaught exception 'Illuminate\Database\Eloquent\ModelNotFoundException' with message 'No query results for model [App\Models\Page].' in /var/www/htdocs/myappname/vendor/illuminate/database/Illuminate/Database/Eloquent/Builder.php:126 Stack trace: #0 /var/www/htdocs/myappname/app/Models/Page.php(100): Illuminate\Database\Eloquent\Builder->firstOrFail() 
#1 [internal function]: App\Models\Page->scopeFindByReference(Object(Illuminate\Database\Eloquent\Builder), 'testing') 
#2 /var/www/htdocs/myappname/vendor/illuminate/database/Illuminate/Database/Eloquent/Builder.php(834): call_user_func_array(Array, Array) 
#3 /var/www/htdocs/myappname/vendor/illuminate/database/Illuminate/Database/Eloquent/Builder.php(915): Illuminate\Database\Eloquent\Builder->callScope('scopeFindByRefe...', Array) 
#4 [internal function]: Illuminate\Database\Eloquent\Builder->__call('findByReference', Array) 
#5 [internal function]: Illuminate\Database\Eloquent\Builder->findByReference('testing') in /var/www/htdocs/myappname/vendor/illuminate/database/Illuminate/Database/Eloquent/Builder.php on line 126 

在routes.php文件有這樣的事情,但它不會加載了刀刃上,而不是它會加載一個在cms中創建的頁面,其中包含一個slug測試。如果我刪除該頁面或重命名它,常規404錯誤彈出。

if ($page->slug == 'testing') { 
      $page->view = 'testing_homebld'; 
     } 

由於應用程序開發者沒有留下任何文檔,不知道還有什麼要做。

感謝幫助女孩和傢伙!

+0

爲什麼不使用Route :: get('testing',function(){返回View :: make('testing');}); ? – Mazzy

+0

錯誤表示無法找到Page模型。你的應用程序是否試圖在某個地方創建一個實例(在視圖中,或理想情況下是控制器)?另外,你使用的是什麼版本的Laravel? – Birdman

+0

你好, 如果我使用,我得到這個錯誤: 致命錯誤:類'路線'找不到在/var/www/htdocs/myappname/routes.php在線201 真的很奇怪。 :/ – Ompa

回答

0

聽起來像你有路由衝突。 if ($page->slug == 'testing') {代碼可能在PageController.php控制器中,我認爲(不像你所說的那樣routes.php);錯誤消息也描述了頁面模型。這表明一些其他路由正在處理您的請求,而不是您的測試路線。

我的猜測是,你有routes.php文件是這樣的,這是抓住你的要求http://your-site/testing(控制器名稱和方法顯然可以在你的代碼的任何東西):

Route::get('/{slug}', '[email protected]'); 

這將匹配和處理請求http://your-site/testing

您的新測試路線可能在之後出現此頁面路線,這意味着它將被忽略 - 第一個要匹配的路線優先,後續匹配將被忽略。

最快的修復方法是將您的新測試路線以上的路徑衝突爲,因此優先。

+0

嘿, 如果我添加上面的代碼我得到這個錯誤: 致命錯誤:類「路線」在/var/www/htdocs/myappname/routes.php未發現線201 真是奇怪的東西發生,猜測我不得不繼續挖掘文件,並找出發生了什麼。 欣賞所有答案! – Ompa

+0

添加什麼代碼?我所建議的只是在路由文件中移動現有的代碼。 –