传递给 Symfony\Component\Form\FormRenderer::searchAndRenderBlock() 的参数 3 必须是数组类型,字符串给定,在 C:\Users\ 中调用
Argument 3 passed to Symfony\Component\Form\FormRenderer::searchAndRenderBlock() must be of the type array, string given, called in C:\Users\
我正在努力自定义我的表单。在 SiteType.php 中,我有以下代码:
class SiteType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom', null, ["attr"=>["class"=>"form-control"]])
->add('grandeVilleProche', null,["attr"=>["class"=>"form-control"]])
->add('villeLaPlusProche', null, ["attr"=>["class"=>"form-control"]])
->add('exposition', ChoiceType::class, array(
'choices' => array(
'N' => 'N',
'NE ' => 'NE',
'E ' => 'E',
'SE ' => 'SE',
'S ' => 'S',
'SW ' => 'SW',
'W ' => 'W',
'NW ' => 'NW',
'toutes ' => 'toutes',
),
// 'choices_as_values' => true,
'multiple' => true,
'expanded' => true
))
->add('altitudeAuxPiedsdesVoies', null, ["attr"=>["class"=>"form-control"]])
->add('dureeMarcheAproche', null, ["attr"=>["class"=>"form-control"]])
->add('profilMarcheApproche', ChoiceType::class,
array(
'choices' => array(
'Non connue'=>'Non connue',
"en montée facile"=>"en montée facile",
"en montée"=>"en montée",
"en montée raide" => "en montée raide",
"en descente facile"=> "en descente facile",
"en descente"=>"en descente",
"en descente raide"=>"en descente raide",
"sur du plat"=>"sur du plat",
"en rappel"=>"en rappel",
"par tyrolienne"=>"par tyrolienne",
"en bateau"=>"en bateau",
"en montée et descente"=>"en montée et descente",
"en montée et descente facile"=>"en montée et descente facile",
"en montée et descente raide"=>"en montée et descente raide",
"en descente et montée"=> "en descente et montée",
"en descente et montée facile"=>"en descente et montée facile",
"en descente et montée raide"=>"en descente et montée raide",
"en télésiège"=>"en télésiège",
"par pont de singe"=>"par pont de singe",
)))
->add('practicabilitePiedsdesVoies', ChoiceType::class,
array(
'mapped' => false,
'choices' => array(
'Non connu'=>'Non connu',
"confortable"=>"confortable",
"correct"=>"correct",
"accidenté" => "accidenté",
"dangereux"=> "dangereux",
)))
->add('latitude', null, ["attr"=>["class"=>"form-control"]])
->add('longitude', null, ["attr"=>["class"=>"form-control"]])
->add('nombreFalaise', null, ["attr"=>["class"=>"form-control"]])
->add('hauteurMax', null, ["attr"=>["class"=>"form-control"]])
->add('typeEscalade', ChoiceType::class, array(
'choices' => array(
'Bloc ' => 'Bloc',
'Voies d\'une longueur ' => 'Voies d\'une longueur',
'Voies de plusieurs longueurs' => 'Voies de plusieurs longueurs',
'Psychobloc ' => 'Psychobloc',
'Structure Artificielle d\'Escalade gratuite et libre d\'accès' => 'Structure Artificielle d\'Escalade gratuite et libre d\'accès',
),
// 'choices_as_values' => true,
'multiple' => true,
'expanded' => true
))
->add('typeEquipement', ChoiceType::class, array(
'choices' => array(
'sportif' => 'sportif',
'engagé ' => 'engagé',
'terrain d\'aventure' => 'terrain d\'aventure',
'moulinette' => 'moulinette',
),
// 'choices_as_values' => true,
'multiple' => true,
'expanded' => true
))
...
在我的 _form.htm.twig 中,我必须遵循以下代码:
<div class="container">
{{ form_start(form, {'attr':{'novalidate':'novalidate'}}) }}
{{ form_errors(form.exposition) }}
{{ form_label(form.nom, null, {'label': 'Nom',
'label_attr': {'class': 'labbel1'}
}) }}
{{ form_widget(form.nom, {'attr': {'class': 'nom'}}) }}
{{ form_label(form.exposition, null, {'label': 'Exposition',
'label_attr': {'class': 'labbel2'}
}) }}
{{ form_widget(form.exposition, {'attr': {'class': 'expo-checkbox'}}) }}
{{ form_label(form.typeEscalade, 'Type d\'escalade', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typeEscalade, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.altitudeAuxPiedsdesVoies, 'Altitude aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.altitudeAuxPiedsdesVoies, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.dureeMarcheAproche, 'durée marche d\'aproche', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.dureeMarcheAproche, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.profilMarcheApproche, 'profilMarcheApproche', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.profilMarcheApproche, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.practicabilitePiedsdesVoies, null, 'Practicabilité aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.practicabiitePiedsdesVoies, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.latitude, 'latitude', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.latitude, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.longitude, 'longitude', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.longitude, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.nombreFalaise, 'Nombre de falaise', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.nombreFalaise, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.hauteurMax, 'Hauteur Max', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.hauteurMax, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.typeEquipement, 'Type d\'équipement', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typeEquipement, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.nombredeVoie, 'Nombre de voie', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.nombredeVoie, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.difficulte, 'difficulte', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.difficulte, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.difficulte2, 'difficulte2', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.difficulte2, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.siteInteressantpourGrimpeur, 'Site interessant pour grimpeur', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.siteInteressantpourGrimpeur, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.typeRocher, 'Type de rocher', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typeRocher, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.profileFalaise, 'Profile de falaise', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.profileFalaise, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.typedePrise, 'Type de prise', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typedePrise, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.restriction, 'restriction', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.restriction, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.infoSuplementaire, 'Info suplementaire', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.infoSuplementaire, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.siteInternet, 'Site internet', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.siteInternet, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.voieMythique, 'Voie mythique', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.voieMythique, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.nomprenompseudo, 'Nom prenom pseudo', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.nomprenompseudo, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.adresseMail, 'Adresse mail', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.adresseMail, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.meilleurperiode, 'Meilleur période', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.meilleurperiode, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.site, 'Photos', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.site, {'attr': {'class': 'expo-checkbox2'}}) }}
{#check if the route is site_edit on display images#}
{% if app.request.attributes.get('_route') == 'site_edit' %}
{% for image in site.media %}
<div>
<img
src="{{ asset('/uploads/' ~ image) }}" alt="image" width="350">
<a href="{{ path('sites_delete_image', {id:site.id}) }}" data-delete data-token="{{csrf_token('delete' ~ site.id )}}">Supprimer</a>
</div>
{% endfor %}
{% endif %}
{# {{ form_row(form.save) }} #}
<div>
<button class="btn btn-primary">{{ button_label|default('Save') }}</button>
</div>
{{ form_end(form) }}
</div>
我有这个错误:
Argument 3 passed to
Symfony\Component\Form\FormRenderer::searchAndRenderBlock() must be of
the type array, string given, called in C:\Users\Diego\Dropbox\Mon PC
(DESKTOP-HPQ395F)\Desktop\coursSymfony -
Copie\ProjetEscalade4-4\var\cache\dev\twig\b9\b9349226432d99fda75ceac3109f9c1a1da36d5daf6021d355a04261335f80f7.php
on line 104
之前我对 practicabilitePiedsdesVoies 字段有错误:
无法阅读 class“App\Entity\Site”中的 属性“practicabilitePiedsdesVoies”。
我把这个 'mapped' => false 放在内置表单中,然后出现上面的错误。
您知道如何解决此错误吗?谢谢
好吧,如果你读了你的错误,它会准确地告诉你它是在提到的缓存 twig 文件的“第 104 行”抛出的。该行可能与您的代码中传递第三个字符串类型参数的行相匹配:
{{ form_label(form.practicabilitePiedsdesVoies, null, 'Practicabilité aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
我假设字符串是标签文本,因此应该是三个参数中的第二个。所以,你可能打算这样写:
{{ form_label(form.practicabilitePiedsdesVoies, 'Practicabilité aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
我正在努力自定义我的表单。在 SiteType.php 中,我有以下代码:
class SiteType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom', null, ["attr"=>["class"=>"form-control"]])
->add('grandeVilleProche', null,["attr"=>["class"=>"form-control"]])
->add('villeLaPlusProche', null, ["attr"=>["class"=>"form-control"]])
->add('exposition', ChoiceType::class, array(
'choices' => array(
'N' => 'N',
'NE ' => 'NE',
'E ' => 'E',
'SE ' => 'SE',
'S ' => 'S',
'SW ' => 'SW',
'W ' => 'W',
'NW ' => 'NW',
'toutes ' => 'toutes',
),
// 'choices_as_values' => true,
'multiple' => true,
'expanded' => true
))
->add('altitudeAuxPiedsdesVoies', null, ["attr"=>["class"=>"form-control"]])
->add('dureeMarcheAproche', null, ["attr"=>["class"=>"form-control"]])
->add('profilMarcheApproche', ChoiceType::class,
array(
'choices' => array(
'Non connue'=>'Non connue',
"en montée facile"=>"en montée facile",
"en montée"=>"en montée",
"en montée raide" => "en montée raide",
"en descente facile"=> "en descente facile",
"en descente"=>"en descente",
"en descente raide"=>"en descente raide",
"sur du plat"=>"sur du plat",
"en rappel"=>"en rappel",
"par tyrolienne"=>"par tyrolienne",
"en bateau"=>"en bateau",
"en montée et descente"=>"en montée et descente",
"en montée et descente facile"=>"en montée et descente facile",
"en montée et descente raide"=>"en montée et descente raide",
"en descente et montée"=> "en descente et montée",
"en descente et montée facile"=>"en descente et montée facile",
"en descente et montée raide"=>"en descente et montée raide",
"en télésiège"=>"en télésiège",
"par pont de singe"=>"par pont de singe",
)))
->add('practicabilitePiedsdesVoies', ChoiceType::class,
array(
'mapped' => false,
'choices' => array(
'Non connu'=>'Non connu',
"confortable"=>"confortable",
"correct"=>"correct",
"accidenté" => "accidenté",
"dangereux"=> "dangereux",
)))
->add('latitude', null, ["attr"=>["class"=>"form-control"]])
->add('longitude', null, ["attr"=>["class"=>"form-control"]])
->add('nombreFalaise', null, ["attr"=>["class"=>"form-control"]])
->add('hauteurMax', null, ["attr"=>["class"=>"form-control"]])
->add('typeEscalade', ChoiceType::class, array(
'choices' => array(
'Bloc ' => 'Bloc',
'Voies d\'une longueur ' => 'Voies d\'une longueur',
'Voies de plusieurs longueurs' => 'Voies de plusieurs longueurs',
'Psychobloc ' => 'Psychobloc',
'Structure Artificielle d\'Escalade gratuite et libre d\'accès' => 'Structure Artificielle d\'Escalade gratuite et libre d\'accès',
),
// 'choices_as_values' => true,
'multiple' => true,
'expanded' => true
))
->add('typeEquipement', ChoiceType::class, array(
'choices' => array(
'sportif' => 'sportif',
'engagé ' => 'engagé',
'terrain d\'aventure' => 'terrain d\'aventure',
'moulinette' => 'moulinette',
),
// 'choices_as_values' => true,
'multiple' => true,
'expanded' => true
))
...
在我的 _form.htm.twig 中,我必须遵循以下代码:
<div class="container">
{{ form_start(form, {'attr':{'novalidate':'novalidate'}}) }}
{{ form_errors(form.exposition) }}
{{ form_label(form.nom, null, {'label': 'Nom',
'label_attr': {'class': 'labbel1'}
}) }}
{{ form_widget(form.nom, {'attr': {'class': 'nom'}}) }}
{{ form_label(form.exposition, null, {'label': 'Exposition',
'label_attr': {'class': 'labbel2'}
}) }}
{{ form_widget(form.exposition, {'attr': {'class': 'expo-checkbox'}}) }}
{{ form_label(form.typeEscalade, 'Type d\'escalade', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typeEscalade, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.altitudeAuxPiedsdesVoies, 'Altitude aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.altitudeAuxPiedsdesVoies, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.dureeMarcheAproche, 'durée marche d\'aproche', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.dureeMarcheAproche, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.profilMarcheApproche, 'profilMarcheApproche', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.profilMarcheApproche, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.practicabilitePiedsdesVoies, null, 'Practicabilité aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.practicabiitePiedsdesVoies, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.latitude, 'latitude', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.latitude, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.longitude, 'longitude', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.longitude, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.nombreFalaise, 'Nombre de falaise', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.nombreFalaise, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.hauteurMax, 'Hauteur Max', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.hauteurMax, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.typeEquipement, 'Type d\'équipement', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typeEquipement, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.nombredeVoie, 'Nombre de voie', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.nombredeVoie, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.difficulte, 'difficulte', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.difficulte, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.difficulte2, 'difficulte2', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.difficulte2, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.siteInteressantpourGrimpeur, 'Site interessant pour grimpeur', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.siteInteressantpourGrimpeur, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.typeRocher, 'Type de rocher', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typeRocher, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.profileFalaise, 'Profile de falaise', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.profileFalaise, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.typedePrise, 'Type de prise', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.typedePrise, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.restriction, 'restriction', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.restriction, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.infoSuplementaire, 'Info suplementaire', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.infoSuplementaire, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.siteInternet, 'Site internet', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.siteInternet, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.voieMythique, 'Voie mythique', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.voieMythique, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.nomprenompseudo, 'Nom prenom pseudo', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.nomprenompseudo, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.adresseMail, 'Adresse mail', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.adresseMail, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.meilleurperiode, 'Meilleur période', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.meilleurperiode, {'attr': {'class': 'expo-checkbox2'}}) }}
{{ form_label(form.site, 'Photos', {'attr': {'class': 'labbel3'}}) }}
{{ form_widget(form.site, {'attr': {'class': 'expo-checkbox2'}}) }}
{#check if the route is site_edit on display images#}
{% if app.request.attributes.get('_route') == 'site_edit' %}
{% for image in site.media %}
<div>
<img
src="{{ asset('/uploads/' ~ image) }}" alt="image" width="350">
<a href="{{ path('sites_delete_image', {id:site.id}) }}" data-delete data-token="{{csrf_token('delete' ~ site.id )}}">Supprimer</a>
</div>
{% endfor %}
{% endif %}
{# {{ form_row(form.save) }} #}
<div>
<button class="btn btn-primary">{{ button_label|default('Save') }}</button>
</div>
{{ form_end(form) }}
</div>
我有这个错误:
Argument 3 passed to Symfony\Component\Form\FormRenderer::searchAndRenderBlock() must be of the type array, string given, called in C:\Users\Diego\Dropbox\Mon PC (DESKTOP-HPQ395F)\Desktop\coursSymfony - Copie\ProjetEscalade4-4\var\cache\dev\twig\b9\b9349226432d99fda75ceac3109f9c1a1da36d5daf6021d355a04261335f80f7.php on line 104
之前我对 practicabilitePiedsdesVoies 字段有错误: 无法阅读 class“App\Entity\Site”中的 属性“practicabilitePiedsdesVoies”。 我把这个 'mapped' => false 放在内置表单中,然后出现上面的错误。 您知道如何解决此错误吗?谢谢
好吧,如果你读了你的错误,它会准确地告诉你它是在提到的缓存 twig 文件的“第 104 行”抛出的。该行可能与您的代码中传递第三个字符串类型参数的行相匹配:
{{ form_label(form.practicabilitePiedsdesVoies, null, 'Practicabilité aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}
我假设字符串是标签文本,因此应该是三个参数中的第二个。所以,你可能打算这样写:
{{ form_label(form.practicabilitePiedsdesVoies, 'Practicabilité aux pieds des voies', {'attr': {'class': 'labbel3'}}) }}