Tôi đã có một mô hình đơn giản (đơn giản hóa các nguồn):Mẫu: Tránh thiết null để phi lĩnh vực nộp
class Collection
{
public $page;
public $limit;
}
Và một loại hình thức:
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',
));
}
}
điều khiển của tôi:
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;
}
Khi tôi POST /users/?form[page]=2&form[limit]=20
, phản hồi là những gì tôi mong đợi:
Collection Object
(
[page:public] => 2
[limit:public] => 20
)
Bây giờ, khi tôi POST /users/?form[page]=3
, phản ứng là:
Collection Object
(
[page:public] => 3
[limit:public] =>
)
limit
trở nên vô giá trị, bởi vì nó không được nộp.
tôi muốn để có được
Collection Object
(
[page:public] => 3
[limit:public] => 10 // The default value, set before the bind
)
Câu hỏi: Làm thế nào tôi có thể thay đổi hành vi hình thức, vì vậy mà nó bỏ qua các giá trị không nộp?
Biểu mẫu của tôi sẽ được sử dụng trong nhiều bộ điều khiển, vì vậy điều này sẽ dẫn đến sự lặp lại. – AdrienBrault
@AdrienBrault Có nhưng bạn phải xác định một lộ trình cho mỗi một bằng nhau ... Một giải pháp tốt hơn có thể là chỉ sử dụng bộ điều khiển, bên trong nó gọi là bộ điều phối sẽ dẫn bạn đến bộ điều khiển phù hợp .... – DonCallisto
Tôi nghĩ rằng người nghe sẽ tốt hơn người điều phối. Dù sao, ở đây, tôi yêu cầu một giải pháp ở cấp biểu mẫu. – AdrienBrault