2013-04-29 49 views
1

我已閱讀並與其他職位合作,看來我剛剛下載的Laravel 4版本對控制器處理JSON輸入的方式做出了更多更改。Laravel 4沒有從輸入中獲取JSON Backbone.js

$input = Input::json()->all();給我錯誤,就好像我指的是當我在做一個PUT請求後請求有效負載的一部分時不存在的東西。沒有->all();我得到一個symfony錯誤。 有誰知道如何從Laravel 4的最新版本的骨幹中獲得良好的JSON?

目前,我做了很長的路繞來獲得我的數據,即:

$input_title = Input::get('title'); 
     $input_completed = Input::get('completed'); 

     $task = Task::find($id); 
     $task->title = $input_title; 
     $task->completed = $input_completed; 
     $task->save(); 

是的,我做的tutsplus教程學習laravel /骨幹網,所以有點小白耐心apreciated。

使用Input::get();當我得到的錯誤是: {「錯誤」:{「類型」:「UnexpectedValueException」,「消息」:「應答內容必須是字符串或對象實施__toString(),\」陣列\「given。」,「file」:「/ Users/brentlawson23/Sites/laravel4App/bootstrap/compiled.php」,「line」:16858}}

我真的想得到Laravel特定的答案,而不是使用直接的PHP來將有效負載串聯起來。

我得到只用Input::json();

同樣的錯誤,對於Laravel 4,輸入:: JSON的目前的測試版();沒有得到可用於在表中創建新行的請求有效負載的字符串化版本,Input :: json() - > all();也不是。 (希望能夠從symfony的ParameterBag中發揮出色)。我曾嘗試json_encode和其他黑客,基本上每一步的方式,我打了一些磚牆。任何人根據我在這裏介紹的內容有一個建議?

今天,我得到了這個時候只是想呼應的$input = Input::json();結果: {「錯誤」:{「類型」:「ErrorException」,「消息」:「開捕致命錯誤:類Symfony的\組件的對象\ HttpFoundation \ ParameterBag無法轉換爲/Users/brentlawson23/Sites/laravel4App/app/controllers/TasksController.php第45行「,」file「:」/ Users/brentlawson23/Sites/laravel4App/app/controllers/TasksController.php中的字符串「,」line「:45}}

是的,我已經學習了Symfony API。

+0

可你只需要使用'輸入::得到()'(無參數)? – 2013-04-29 18:03:17

+0

嗯,嗯不知道,我會給它一個鏡頭,謝謝 – 2013-04-29 19:57:25

+0

所以不實際工作,簡單和直觀,我很感激它,但它給出了相同的錯誤 – 2013-04-29 20:22:45

回答

1

我也有類似的問題。來自的輸入將骨幹轉換爲Laravel中的陣列。在tutsplus上,Jeffrey Way正在使用對象。所以我想這樣做(如在教程):

return $input->title // using object,but got an error. 

如果我改變該行:

return $input["title"] // everything works fine with array. 
1

我也在通過關於tuts +的Backbone教程。如果我正確地假設您是否卡在創建新聯繫人部分?下面是我如何得到它的工作對我來說,在ContactController.php:

public function store() 
{ 
    $input = Input::all(); 
    Contact::create(array(
     'first_name' => $input['first_name'], 
     'last_name' => $input['last_name'], 
     'email_address' => $input['email_address'], 
     'description' => $input['description'] 
    )); 
} 

然後還需要更新的應用程序/模型/ Contact.php與下面:

class Contact extends Eloquent { 
    protected $fillable = array('first_name', 'last_name', 'email_address', 'description'); 

}

這應該讓你的工作,並將聯繫人插入數據庫。如果我誤讀了我,我可以再看一次。

乾杯,

肖恩

+1

對我來說Input :: all()是空的! 但Input :: getContent()有一串JSON數據。 – 2013-07-14 20:21:26

+0

@肖恩是的!你的解決方案工作得很好。我也在研究tuts +聯繫人應用程序。如果您正在使用這個相同的應用,請不要忘記在'聯繫'模型中添加'public $ timestamps = false'。謝謝 – 2013-08-21 13:23:16