2014-07-09 12 views
1

所有我的控制器的前三個方法都工作正常,但是當我添加第四個方法時,這個不起作用(不包括構造方法)並給我一個帶有控制器動作URL的空白頁面。
我的控制器類:laravel 4:總是第四個控制器方法不起作用 - >空白頁

class StoreController extends BaseController{ 

    public function __construct(){ 
     parent::__construct(); 
     $this->beforeFilter('csrf', ['on'=>'post']); 
    } 

    public function getIndex(){ 
     return View::make('store.index', ['products'=>Product::take(4)->orderBy('created_at','DESC')->get()]); 
    } 

    public function getView($id){ 
     return View::make('store.view', ['product'=>Product::find($id)]); 
    } 

    public function getCategory($cat_id){ 
     return View::make('store.category', [ 
      'products'=>Product::where('category_id','=',$cat_id)->paginate(6), 
      'category'=>Category::find($cat_id)]); 
    } 

    public function getSearch(){ 
     $keyword=Input::get('keyword'); 
     return View::make('store.search', [ 
      'products'=>Product::where('title','LIKE','%'.$keyword.'%')->get(), 
      'keyword'=>$keyword]); 
    } 

} 

在我route.php文件:

Route::controller('store', 'Storecontroller'); 

和動作的triggerer形式是:

<div id="search-form"> 
        {{ Form::open(['url'=>'store/search', 'method'=>'get']) }} 
         {{ Form::text('keyword', null, ['placeholder'=>'Search by keyword', 'class'=>'search']) }} 
         {{ Form::submit('Search', ['class'=>'search submit']) }} 
        {{ Form::close() }} 

正如我所說的getSearch方法沒有按沒有工作,我得到了一個空白頁面的動作url(不是返回的視圖)

感謝

+0

它看起來像'Input :: get()'部分導致了問題。爲其添加默認值,如'Input :: get('keyword','default')'並重試。您也可以執行檢查,檢查關鍵字是否使用例如if(Input :: has('keyword')){...} else {...}'。 –

回答

0

由於頁面是空白,確保debug在您的應用程序配置設置爲true(應該是最上面的設置,最好在local dir)。這意味着當發生錯誤時,您將看到一個錯誤頁面,其中包含詳細的堆棧跟蹤和錯誤消息,使您更容易調試您的應用程序。

確保store.search存在的觀點,是正確命名(檢查是否有錯別字),幷包含了你需要顯示$products的HTML/PHP。

接下來,你有兩種可能性:

  1. 設置爲keyword輸入

    // For example: 
    
    Input::get('keyword', 'default') 
    
  2. 檢查,如果有一個關鍵字的默認值指定

    // For example: 
    
    if (Input::has('keyword')) {...} else {...} 
    

附註:你不應該像在這裏一樣在數組內執行(繁重)任務。將它們放入變量中,並像使用關鍵字變量一樣將它們包含到視圖數組中。您的代碼也將更具可讀性和可維護性。關於這點還有很多,但這裏的重點就在這裏。

讓我知道這是否幫助你。

+0

爲調試:它已被設置爲true和shecked的輸入:得到喲說Ithink的問題是行動不執行,因爲我只是在方法內寫'返回'你好'',我仍然有空白頁。 – AmineC

+0

另外,當我執行php的工匠路線(MS DOS)的控制器方法列在黑屏 – AmineC

+0

@AmineC你有沒有改變什麼呢?就像添加默認輸入值一樣? –