2015-09-10 87 views
0

我已經開始學習Laravel(5.1)並且一直在使用laracasts開始。路線,視圖,控制器和模型行爲奇怪,緩存

基本工作後,我決定嘗試自己的。我創建了一個項目,並做得很好,但後來遇到了一個障礙。所以我決定創建一個新的演示項目來測試我是否打破了一些配置。

我創建了一個頁面移植表,其中title,slughtml列。

我也有一個飛機(生成與php artisan make:model)模型的頁面Page

我有我的PageController它採用App\Page,並具有indexshow方法,像這樣:

public function index() 
{ 
    return 'Pages Index'; 
} 

public function show(Page $page) 
{ 
    return $page; 
} 

然後我就可以這樣來配置我的routes.php文件:

$router->bind('page', function($slug) 
{ 
    return App\Page::where('slug', $slug)->first(); 
}); 

$router->get('pages/', '[email protected]'); 
$router->get('pages/{page}', '[email protected]'); 

我預期的輸出是www.example.com/pages輸出「頁面索引」,並且wwww.example.com/pages/about輸出數據庫中的關於頁面。

這工作。然後我轉回到我的主要項目進行測試,並且我無法使項目正常工作。然後我轉回到我的演示項目。我測試了將我的$router->get s切換到$router->resource,它沒有工作,所以我按照我的方式回到了文件開始的方式,但該項目不再有效。我只是得到一個空的(新)頁面對象。

我試過使用php artisan cache:clear,php artisan view:clear, php artisan route:cache無濟於事。我也嘗試清除瀏覽器的緩存,但沒有。

我做錯了什麼?還是有什麼東西卡在Laravel?

更新

根據要求,這是我真正的項目代碼:

routes.php

<?php 

/* 
|-------------------------------------------------------------------------- 
| Application Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register all of the routes for an application. 
| It's a breeze. Simply tell Laravel the URIs it should respond to 
| and give it the controller to call when that URI is requested. 
| 
*/ 

$router->bind('page', function($slug) 
{ 
    return App\Page::where('slug', $slug)->first(); 
}); 

$router->resource('page', 'PageController'); 

PageController.php

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

use App\Page; 

class PageController extends Controller 
{ 

    public function index() 
    { 
     $page = Page::where('slug', 'index')->first(); 
     return view('page.index', compact('page')); 
    } 

    public function show(Page $page) 
    { 
     return $page; 
    } 
} 

我的索引視圖顯示正確頁面f rom數據庫,但該節目僅在屏幕上顯示[]

+0

當你說'我然後轉回到我的主項目來測試,並且我無法讓項目工作'時,錯誤是什麼?你什麼意思? – manix

+0

@manix本身沒有錯誤,我只是在我的視圖中得到空的對象。 – sharf

+0

手動刪除已編譯的類:刪除'/ bootstrap/cache/services.json'然後執行'php artisan optimize' – manix

回答

1

事實證明,問題來自於使用php artisan route:cache,因爲無法編譯具有閉包的路由。運行php artisan route:clear解決了這個問題。

相關問題