Я считаю, что то, что вы пытаетесь сделать, описано здесь:
Symfony + Doctrine - определите сообщение об ошибке при ошибке ограничения целостности
Я не буду копировать - вставьте сообщение целиком, но концепция состоит в том, чтобы создать onKernelResponse
слушателя и прослушать PDOException
. Как это сделать, есть много статей, я думаю, что вы можете легко найти в Интернете, я выбрал одну из первых, которые я нашел.
В этом Слушателе вы можете определить, что это за исключение, и использовать flashbag либо по умолчанию Symfony:
https://symfony.com/doc/current/components/http_foundation/sessions.html
$session->getFlashBag()->add('notice', 'Profile updated');
Или вы можете использовать Sonata Core Flashbag:
https://sonata-project.org/bundles/core/master /doc/reference/flash_messages.html
Чтобы использовать эту функцию в ваших классах / контроллерах PHP:
$flashManager = $this->get('sonata.core.flashmessage.manager');
$messages = $flashManager->get('success');
Кому используйте эту функцию в своих шаблонах, включите следующий шаблон (с необязательным параметром домена):
{% include '@SonataCore/FlashMessage/render.html.twig' %}
Примечание. При необходимости вы также можете указать домен перевода для переопределения конфигурации:
blockquote>
{% include '@SonataCore/FlashMessage/render.html.twig' with { domain: 'MyCustomBundle' } %}
Вы также можете взглянуть на эту статью https://tocacar.com/symfony2-how-to-modify-sonataadminbundles-error -message-on-entity-deletion-ca77cac343fa и переопределить
CRUDController::deleteAction
, чтобы вы могли обрабатывать такие ошибки.И здесь вы можете найти код, немного связанный с вашей проблемой, на странице Sonata Admin GitHub https://github.com/sonata-project/SonataAdminBundle/issues/4485 , который он перехватывает.
PDOException
, так что также проверьте, какую версию вы используете, возможно, вам нужно обновление.
Используйте "подстановочную" функцию:
$(wildcard *.h)
РЕДАКТИРОВАНИЕ: для соответствия определенному списку сделайте
$(wildcard $(HEADER_FILES))
нет никакой потребности использовать $ (фильтр...), подстановочная функция автоматически фильтрует файлы, которые не существуют.
Простые
$(filter $(wildcard *.h),$(HEADER_FILES))
делают то, что Вы хотите?
Вы не указывали, какой компилятор (компиляторы) Вы используете, но если у Вас есть доступ к gcc/g ++, можно использовать - опция MM.
То, что я делаю, создают файл с расширением.d для каждого.c или .cpp файл, и затем "включают".d файлы. Я использую что-то вроде этого в своем Make-файле:
%.d: %.c
gcc $(INCS) $(CFLAGS) -MM $< -MF $@
%.d: %.cpp
g++ $(INCS) $(CXXFLAGS) -MM $< -MF $@
Я затем создаю зависимости как это:
C_DEPS=$(C_SRCS:.c=.d)
CPP_DEPS=$(CPP_SRCS:.cpp=.d)
DEPS=$(C_DEPS) $(CPP_DEPS)
и это у основания Make-файла:
include $(DEPS)
Действительно ли это - вид поведения, для которого Вы идете? Красота этого метода состоит в том, что даже при использовании компилятора не-GNU для фактической компиляции компиляторы GNU делают хорошее задание вычисления зависимостей.