我有一个简单的模型(源代码简化):
class Collection
{
public $page;
public $limit;
}
Run Code Online (Sandbox Code Playgroud)
和表单类型:
class CollectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('page', 'integer');
$builder->add('limit', 'integer');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'FSC\Common\Rest\Form\Model\Collection',
));
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
public function getUsersAction(Request $request)
{
$collection = new Collection();
$collection->page = 1;
$collection->limit = 10;
$form = $this->createForm(new CollectionType(), $collection)
$form->bind($request);
print_r($collection);exit;
}
Run Code Online (Sandbox Code Playgroud)
当我POST /users/?form[page]=2&form[limit]=20,回应是我所期望的:
Collection Object
(
[page:public] => 2
[limit:public] => 20
)
Run Code Online (Sandbox Code Playgroud)
现在,当我POST /users/?form[page]=3 …
我正在Symfony2中使用FOSRestBundle构建REST API.我正在使用表单来创建和更新Doctrine2实体.如果我发送所有表单字段,一切正常.例:
{"first_name":"Pi","last_name":"Wi"}
Run Code Online (Sandbox Code Playgroud)
该人插入正常,但现在我只想更新姓氏.
{"last_name":"Wi"}
Run Code Online (Sandbox Code Playgroud)
问题是更新后第一个名称为空,因为表单使用"null"值更新实体(因为没有给出).是否可以只更新姓氏并忽略名字?