Я работаю над формой Symfony 4.2 для регистрации администратора.Моя административная сущность имеет двустороннее отношение один к одному с городской сущностью.Я хотел предоставить пользователю сообщение об ошибке, когда предоставленный им Город уже связан с существующим администратором.Сначала я попытался использовать тот же метод, который я использую для предотвращения дублирования писем в других объектах.Я поместил ограничение UniqueEntity в обе сущности и пространство для ошибок форм в моем шаблоне.
Admin.php
/**
* @ORM\Entity(repositoryClass="App\Repository\AdminRepository")
* * @UniqueEntity(
* fields={"city"},
* message="error message here"
* )
* @Vich\Uploadable
*/
class Admin
{ ... }
City.php
/**
*
* @ORM\Table(name="city")
* @ORM\Entity
* @UniqueEntity(
* fields={"admin"},
* message="error message here"
* )
*/
class City
{...}
(IПредположим, что синтаксис аннотаций отличается, потому что таблица Admin была создана несколько месяцев назад, когда я еще работал на Symfony 4.0)
Но я, должно быть, что-то упустил, или это работает по-другому с отношениями, потому что я все еще получаю SQLстраница сообщения об ошибке «SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись« 1 »для ключа« UNIQ_3946A254A73F0036 »».
Я также подумал о методе javascript для вызова базы данных и проверки, является ли Городпредоставленный пользователем, уже связан с администратором, что было бы еще лучше, потому что без обновления и все такое, но я не могу получить результаты из моего запроса.
на стороне клиента, вызывается по ключу
function cityRequest(){
var cityCode = document.getElementById("city").value;
if(cityCode) {
$.ajax({
type: 'post',
url: "{{ path('checkCity')}}",
data: {
city_code:cityCode,
},
success: function (response) {
$('#cityMsg').html(response);
}
});
} else {
...
}
}
Контроллер запросов
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
class AjaxController extends AbstractController
{
/**
* @Route("/ajaxrequest", name="checkCity", methods="GET|POST")
*/
public function checkCity(Request $request)
{
$code= $request->get('city_code');
$response = new JsonResponse(array(
'message' => $code));
return $response;
}
}
В ответе 'message' отображает ноль, но я хочу, чтобы это была строка, введенная пользователем (тогда ямог бы забрать мой город и проверить существующего администратора ...)
Поскольку я нахожусь в стойле с обоими методами, ваша помощь очень ценится .. Спасибо!