Когда я установил параметр, маршрут не найден - PullRequest
0 голосов
/ 30 октября 2018

Я занимаюсь разработкой приложения с помощью Symfony 4, но у меня возникла небольшая проблема.

Я создал контроллер с обязательным параметром, но когда я иду по маршруту, я получаю это сообщение:

enter image description here

Вот код моего html-файла:

{% extends 'base.html.twig' %}
{% block title %}Registro Madre{% endblock %}
{% block body %}
<div class="container">
    <h1>Ingrese los datos de la madre</h1>
    <form action="/insertMadre" method="POST">
        <div class="row">
            <div class="col-sm-6">
                <div class="form-group">
                    <label for="nombre">Nombres:</label>
                    <input type="text" name="nombre" class="form-control" id="nombre" required>
                </div>
            </div>
            <div class="col-sm-6">
                <div class="form-group">
                    <label for="apellido">Apellidos:</label>
                    <input type="text" name="apellido" class="form-control" id="apellido" required>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-sm-2">
                <div class="form-group">
                    <label for="nacimiento">Fecha de nacimiento</label>
                    <input type="date" name="nacimiento" id="nacimiento" class="form-control" required>
                </div>
            </div>
            <div class="col-sm-4">
                <div class="form-group">
                    <label for="nacionalidad">Nacionalidad</label>
                    <input type="text" name="nacionalidad" id="nacionalidad" class="form-control" required>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="form-group">
                    <label for="contacto">Teléfono de Contacto</label>
                    <input type="tel" name="contacto" id="contacto" class="form-control" required>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="form-group">
                    <label for="dui">DUI (sin guiones)/No. Pasaporte</label>
                    <input type="text" name="dui" id="dui" class="form-control">
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-sm-6">
                <div class="form-group">
                    <label for="direccion">Dirección:</label>
                    <input type="text" name="direccion" id="direccion" class="form-control" required>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="form-group">
                    <label for="departamento">Departamento:</label>
                    <select name="departamento" id="departamento" class="form-control" required>
                        <option value="">Seleccione una opción..</option>
                        {% for departamento in departamentos %}
                            <option value="{{ departamento.id }}">{{ departamento.depname }}</option>
                        {% endfor %}
                    </select>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="form-group">
                    <label for="municipio">Municipio:</label>
                    <select name="municipio" id="municipio" class="form-control" required>
                        <option value="">Seleccione una opción..</option>
                    </select>
                </div>
            </div>
        </div>  

        <legend>Datos Clínicos</legend>
        <div id="datos-clinicos">
            <div class="row">
                <div class="col-sm-2">
                    <span class="datos-clinicos-text">Fórmula Obstétrica</span>
                </div>
                <div class="col-sm-1">
                    <span class="datos-clinicos-text">G</span>
                </div>
                <div class="col-sm-1">
                    <input type="number" class="form-control" min="0" step="1" value="0" name="formG" id="formG">
                </div>
                <div class="col-sm-1">
                    <span class="datos-clinicos-text">P</span>
                </div>
                <div class="col-sm-1">
                    <input type="number" class="form-control" min="0" step="1" value="0" name="formP" id="formP">
                </div>
                <div class="col-sm-1">
                    <span class="datos-clinicos-text">P</span>
                </div>
                <div class="col-sm-1">
                    <input type="number" class="form-control" min="0" step="1" value="0" name="formP1" id="formP1">
                </div>
                <div class="col-sm-1">
                    <span class="datos-clinicos-text">A</span>
                </div>
                <div class="col-sm-1">
                    <input type="number" class="form-control" min="0" step="1" value="0" name="formA" id="formA">
                </div>
                <div class="col-sm-1">
                    <span class="datos-clinicos-text">V</span>
                </div>
                <div class="col-sm-1">
                    <input type="number" class="form-control" min="0" step="1" value="0" name="formV" id="formV">
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-sm-6">
                <div class="form-group">
                    <label for="enfermedadMedica">Enfermedades médicas que afecten el desarrollo del embarazo</label>
                    <select name="enfermedadMedica" id="enfermedadMedica" class="form-control">
                        <option value="0">Elija una opción</option>
                    </select>
                </div>
            </div>
            <div class="col-sm-6">
                <div class="form-group">
                    <label for="enfermedadExantematica">Enfermedad exantemática durante el embarazo</label>
                    <select name="enfermedadExantematica" id="enfermedadExantematica" class="form-control">
                        <option value="0">Elija una opción</option>
                    </select>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-sm-12">
                <div class="form-group">
                        <label for="informacionExtra">Otra Información</label>
                        <textarea name="informacionExtra" id="informacionExtra" class="form-control" rows="5" style="resize:none"></textarea>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-sm-12 text-right">
                <input type="submit" value="Registrar" class="btn-site">
            </div>
        </div>
    </form>
</div>
{% endblock %}

Вот мой контроллер:

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

use App\Entity\Madre;
use App\Entity\DatosClinicosMadre;
use App\Entity\ProductoObstetrico;
use App\Entity\CondicionProducto;

class ProductoController extends AbstractController
{
    public function registro($id)
    {
        $madre = $this->getDoctrine()->getRepository(Madre::class)->find($id);
        return $this->render('producto/register.html.twig');
    }
}

А вот мой маршрут:

registro-producto:
  path: /ingresar-producto/{id}
  name_prefix: nuevoProducto
  controller: App\Controller\ProductoController::registro

Если я не отправляю параметр, у меня не возникает никаких проблем, но когда я хочу отправить идентификатор, возникает проблема, и если я устанавливаю маршрут с параметром и не отправляю параметр, я получаю ошибка, говорящая мне, что я должен отправить параметр. Я не знаю, что происходит ...

UPDATE

Это то, что я получаю, когда запускаю отладку php bin / console: router

enter image description here

Спасибо всем!

1 Ответ

0 голосов
/ 30 октября 2018

Это потому, что вы не объявили тип параметра.

Попробуйте изменить файл маршрутов так:

registro-producto:
  path: /ingresar-producto/{id}
  name_prefix: nuevoProducto
  controller: App\Controller\ProductoController::registro
  requirements:
      id: \d+

При этом тип {id} устанавливается на цифру , что позволяет параметру /3.

Смотрите здесь:

Взято из документов Symfony:

Добавление {подстановочных знаков} требований

Представьте, что маршрут blog_list будет содержать постраничный список сообщений блога с URL-адресами, такими как / blog / 2 и / blog / 3 для страниц 2 и 3. Если вы измените путь маршрута на / blog / {page}, у вас будет проблема:

blog_list: /blog/{page} will match /blog/*;
blog_show: /blog/{slug} will also match /blog/*.

Когда два маршрута соответствуют одному и тому же URL, первый загруженный маршрут выигрывает. К сожалению, это означает, что / blog / yay-routing будет соответствовать blog_list. Не хорошо!

Чтобы это исправить, добавьте требование, чтобы подстановочный знак {page} мог соответствовать только цифрам (цифрам)

ref: https://symfony.com/doc/current/routing.html

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