Параметр "" для маршрута "" должен соответствовать "[^ /] ++" ("" дано), чтобы создать соответствующий URL - PullRequest
2 голосов
/ 08 июня 2019

У меня есть эта сущность Фасада, каждый раз, когда я пытаюсь изменить форму, в которую включена моя ветка ниже, она возвращает эту ошибку:

An exception has been thrown during the rendering of a template ("Parameter "buildings_id" for route "addFacade" must match "[^/]++" ("" given) to generate a corresponding URL.").

Мое действие контроллера:

/**
 * @Route("/{id}/card", name="business_card", methods="GET|POST|DELETE", defaults={"business_id"=1})
 * @param Request $request
 * @param Business $business
 * @return Response
 */
public function show_card(Request $request, Business $business): Response
{

    $businessCard = $business->getBusinessCard();

    $formCard = $this->createForm(BusinessCardType::class, $businessCard);
    $formCard->handleRequest($request);

    if (($formCard->isSubmitted() && $formCard->isValid())) {

        $businessCard = $formCard->getData();
        $em = $this->getDoctrine()->getManager();

        $em->persist($businessCard);
        $em->flush();

        return $this->redirectToRoute('business_card', ['id' => $business->getId()]);
    }

    $dict = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
    return $this->render('business/card.html.twig', ['business' => $business, 'formCard' => $formCard->createView(), 'dict' => $dict]);
}

Шаблон моей веточки:

{% for buildingsInfo in business.businessCard.buildingsInfos %}
{% set idBuildingsInfo = idBuildingsInfo|merge([buildingsInfo.id]) %}
<a class="btn btn-outline-primary mb-3" href="{{ path("addFacade",{"buildings_id": idBuildingsInfo[j] }) }}">Ajouter une façade</a>
{% endfor %}

Я попытался вывести свою переменную idBuildingsInfo, но все значения массива являются числами (без нулевых значений). Я также попытался добавить значение по умолчанию в моем контроллере для параметра buildings_id, но оно, похоже, ничего не меняет.

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Внимательно прочитайте ошибку

Параметр "building_id" ... ("" задано)

Переданное вами значение параметра равно нулю ("")

{{ path("addFacade",{"buildings_id": idBuildingsInfo[j] }) }}

Определен ли j? или эта строка должна выглядеть следующим образом:

{{ path("addFacade",{"buildings_id": idBuildingsInfo["j"] }) }}
0 голосов
/ 08 июня 2019

Я предполагаю, что ошибка может иметь отношение к:

href="{{ path("addFacade",{"buildings_id": idBuildingsInfo[j] }) }}

и, возможно, мы set изменим переменную для href, а затем экранируем те ", которые требуются для экранирования, и наш код будет выглядеть следующим образом:

{% for buildingsInfo in business.businessCard.buildingsInfos %}
{% set idBuildingsInfo = idBuildingsInfo|merge([buildingsInfo.id]) %}
{% set path = "\"addFacade\", {\"buildings_id\": idBuildingsInfo[j]" %}
<a class="btn btn-outline-primary mb-3" href="{{ path }}">Ajouter une façade</a>
{% endfor %}

или чем-то похожим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...