我正在開發一個 Symfony 應用程式來向儀表添加儀表值。一個儀表可以有一組測量值,對于每個測量值,我想顯示一個值表來輸入值。
為此,我在控制器中有一個函式,它ArrayCollection根據相應的測量值創建一個新元素,如下所示:
/**
* @Route("/{id}/add", name="metervalue_add", methods={"GET","POST"})
*/
public function add(Request $request, Meter $meter): Response
{
$metervalues = new ArrayCollection();
$measurements = $meter->getMeasurements();
// create an empty metervalue for each measurement of the meter
foreach ($measurements as $measurement) {
$mv = new MeterValue();
$mv->setMeter($meter);
$mv->setMeasurement($measurement);
$metervalues->add($mv);
}
$form = $this->createForm(MeterValueAddType::class, ['metervalues' => $metervalues]);
$form->handleRequest($request);
// ... form submitting stuff
// ...
return $this->renderForm('metervalue/add.html.twig', [
'form' => $form
]);
}
相應的 MeterValueAddType 看起來像
class MeterValueAddType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('metervalues', CollectionType::class, [
'entry_type' => MeterValueType::class
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
當我呈現表單一切正常時,空物件按預期呈現,我可以提交表單并且所有資料都正確插入到資料庫中,包括測量和儀表 ID。
但是,在我的模板中,我無法訪問metervalue物件的屬性,例如metervalues.measurement或metervalue.meter
{% for metervalue in form.metervalues %}
{{ form_widget(metervalue.value) }}
{{ form_widget(metervalue.date) }}
Name of measurement: {{ metervalue.measurement.name }} <-- this throws the following error
{% endfor %}
錯誤:屬性“measurement”和方法“measurement()”、“getmeasurement()”/“ismeasurement()”/“hasmeasurement()”或“__call()”都不存在并且在類“中具有公共訪問權限” Symfony\Component\Form\FormView”。
我不明白為什么我不能訪問這里的屬性只是為了顯示它們,因為它們在控制器上面分配并在保存時正確存盤在資料庫中......
屬性“測量”和相應的“getmeasurement()”存在,例如,如果我在串列中顯示所有保存的物件,我可以訪問這些
uj5u.com熱心網友回復:
來自msg的提示為我指明了正確的方向。不得不使用
{{ metervalue.vars.data.meter.name }}
讓它作業!謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/389161.html
