我正在序列化一个表单并成功获取我想要发送的对象,但是当发出POST请求时,浏览器只传入playerName
属性,只传递该属性,即使我更改输入名称和在playerName
的地方传递另一个属性,除非它是playerName
attr。否则它将无法通过。
这是我的backbone.js javascript代码,用于将表单另存为对象。
savePlayer: function(e) {
e.preventDefault();
var playerDetails = $(e.currentTarget).serializeObject();
console.log(playerDetails); // this returns perfectly with all attributes
// I tried this with a model, saving it
var player = new App.Models.Player();
player.save(playerDetails);
// and with a collection creating it
var playersCollection = new App.Collections.PlayersCollection();
playersCollection.create(playerDetails);
return false;
}
现在我正在尝试保存两个属性playerName
和teamID
,因此当调用save / create时,表单会像{playerName: 'mike', teamID: '2'}
一样顺序序列化,有一个POST方法和控制器处理下面的内容。
// First attempt
public function store()
{
return Player::create(array(
'playerName' => Input::get('playerName'),
'teamID' => Input::get('teamID')
));
}
//Second try
public function store()
{
// I used this
$input = Input::json();
// And this (not same time lol)
$input = Input::all();
return Player::create(array(
'playerName' => $input->playerName,
'teamID' => $input->teamID
));
}
在POST回复中,似乎属性确实传递到Post
标签,但在Response
和JSON
中,它们不会仅显示playerName
ATTR。
发表
//source
{"playerName":"Joesph","teamID":"1"} // Good
但在
响应
//It gets an id for the table, a smart feature from backbone.js
{"playerName":"Joesph","id":23} // Missing "teamID":"1"?
这里的额外措施是我的表格。
新玩家
<label>First & Last Name</label>
<input name="playerName" type="text" value="">
<hr />
// Here I tried dynamic like below and static, just passing in a number like "2"
<input type="hidden" name="teamID" value="<%= team.teamID %>" />
<button type="submit" class="btn">Create</button>
上面的表格代替playerName
我尝试使用teamID
,以及模型上的其他属性,除了attr之外什么都不起作用?
答案 0 :(得分:0)
好的,这对我有用,因为它对我没有多大意义,但在向服务器发送数据时,我需要使用$fillable
变量。我想我需要阅读更多相关内容。
// I needed to add it to this array
protected $fillable = array('playerID', 'playerName', 'teamID');
因此,此代码位于我的模型中,类名为Player
,这是该模型的完整代码。
class Player extends Eloquent {
public $timestamps = false;
protected $fillable = array('playerID', 'playerName', 'teamID');
}
现在我原来帖子中的代码工作,很讨厌像这样的小挫折。希望我没有浪费任何时间,我希望这可以帮助使用backbone.js和laravel的人!