2013-08-18 82 views
0

我的控制器目錄中有一個名爲CharactersController.php的控制器。這裏有兩個功能:Laravel 4 URL ::操作錯誤

public function search() 
{ 
    return View::make('search.search'); 
} 

public function post_search() 
{ 
    $name = Input::get('character'); 
    $searchResult = Player::where('name', 'LIKE', '%'.$name.'%')->paginate(5); 
    return View::make('search.post_search') 
      ->with('name', $name) 
      ->with('searchResult', $searchResult); 
} 

在第一個函數(function search())我返回一個視圖。這裏的視圖(只是形式)的代碼:

 <form id="custom-search-form" class="form-search form-horizontal pull-right" action="{{ URL::action('[email protected]_search') }}" method="get"> 
     <div class="input-append spancustom"> 
      <input type="text" class="search-query" name="character" placeholder="Character/guild name"> 
      <button type="submit" class="btn"><i class="icon-search"></i></button> 
     </div> 
    </form> 

當我嘗試運行的形式(搜索),我得到一個Unknown action [[email protected]_search].錯誤。我之前有過這個錯誤,我嘗試過切換控制器,嘗試做所有事情。但它沒有奏效。所以我放棄了。

任何人都可以解決它?

+0

你嘗試運行composer dump-autoload嗎? – Laurence

+0

@TheShiftExchange嘗試過,得到了一個錯誤消息,說明我的作曲家構建時間過長,我需要自行更新它。這就是我所做的。試圖再次運行它,同樣的事情發生。 –

+0

這不是錯誤消息。這只是一個錯誤消息。作曲家實際上將繼續並完成自動加載你的情況。它應該是。 –

回答

0

那是控制器RESTful?

,你必須在routes.php文件中創建一個Route::controller()

如果不是RESTFul,您可以嘗試在方法標題中刪除post_嗎?

+0

罰款工作,謝謝,這解決了我的問題哈哈。 –

0

您是否確實爲控制器的方法定義了路線?您需要這樣做,否則當您致電URL::action()

+0

是的,沒有一個。但我不想有一個post方法,我想要一個get方法,因爲post會很煩人。我可以有兩條獲得路線嗎? –

+0

我對Laravel 3瞭解不多,但我假設您使用的是最新版本(即撰寫本文時爲4),因爲您使用的是標籤。基本上,你可以調用'Route :: get('someurl','CharactersController @ post_search')'它應該用'post_search()'方法處理'someurl'上的'GET'請求。 –

0

時,會引發異常異常功能名稱需要根據PSR-1進行駝峯式升級。 Chnage post_search到postSearch

+0

仍然不起作用。我設法讓它在Route :: post和postSearch中工作,但我不想讓它發佈。我希望它像以前一樣是get方法,但是我不能在沒有錯誤的情況下更改表單中的操作。說控制器方法不存在。 –

+0

你是否使用類似於:Route :: get('url',['uses'=>'CharactersController @ postSearch']); –

+0

沒有。你可以查看我的路線:http://paste.laravel.com/Kxb –