2014-01-25 72 views
0

我在使用Laravel 4.1和刀片模板引擎發佈表單時遇到問題。問題似乎是包含http://的完整URL包含在表單action屬性中。如果我手動硬編碼表單打開HTML並使用相對的網址,它的工作正常,但是,當它有完整的網址,我得到一個異常。在form.blade.php在Laravel 4.1和刀片模板中發佈表格

{{ Form::open(["url" => "/","method" => "post","autocomplete" => "off"]) }} 
{{ Form::label("username", "Username") }} 
{{ Form::text("username", Input::old("username"), ["placeholder" => "john.smith"]) }} 
{{ Form::label("password", "Password") }} 
{{ Form::password("password", ["placeholder" => ""]) }} 
{{ Form::submit("login") }} 
{{ Form::close() }} 

所以

routes.php文件

Route::any("/", '[email protected]'); 

HomeController.php

public function showWelcome() 
{ 
    echo($_SERVER['REQUEST_METHOD']); 
    return View::make('form'); 
} 

形式打開標籤,如果我去我家DIR /中瀏覽器,我看到了我創建的表單。如果我填寫表單的詳細信息並單擊提交,我簡單地進入相同的頁面 - 請求方法仍然是GET,如echo($ _ SERVER ['REQUEST_METHOD'])所示;

我注意到全

http://localhost/subdir/public/ 

URL在形式標記使用。如果我在如

<form action="/subdir/public/" method="post"> 

它工作正常硬編碼形式的開放標籤和$ _ SERVER [「REQUEST_METHOD」]顯示爲後。

我在這裏做錯了什麼?

+0

Route :: any不是很好的編碼習慣。通常你想分開不同請求方法的邏輯。 – elliotanderson

回答

0

您已創建帖子的路由?

例如:

{{Form::open(["url"=>"/", "autocomplete"=>"off"])}} //No need to later add POST method 

在Route.php

Route::post('/', '[email protected]'); 
+0

Route :: any(「/」,'HomeController @ showWelcome'); 這是我唯一的路線。我假設'任何'部分意味着它是GET和POST路線.... –

0

您還沒有設置來處理POST的路線。你可以通過幾種方法來實現。

正如上文所指出:

Route::post('/', '[email protected]'); 

請注意,如果您堅持使用現有的Route::any,由於Laravel爲了處理它們的`Route::post需要,在它之前(我相信)。

你也可以用它處理的控制器方法showWelcome

if (Input::server("REQUEST_METHOD") == "POST") { 
... stuff 
} 

我更喜歡單獨的路由方法。我傾向於避免Route::any,並且在我的登錄頁面中分別使用Route::getRoute::post來處理表單的顯示和處理。