Реализуем CRUD в Symfony


Создание CRUD в symfony 4

После выпуска Symfony 4.0 поддержка SensioGeneratorBundle . поэтому команда php app/console generate:doctrine:crud недоступен.

Они предлагают использовать MakerBundle, но я не смог найти подходящую замену для генерации CRUD.

Может ли кто-нибудь помочь?

Вы можете использовать команду make в Symfony4 (и это довольно большое улучшение!) Из MakerBundle:

Он подскажет вам, для какой сущности вы хотите. Он генерирует контроллер с методами index, new, update, view и delete в /src/controller , с соответствующими шаблонами в /templates .

Полезно знать: если вы запустите make:entity , а затем снова запустите эту команду и введете существующую сущность, она ответит:

Ваша сущность уже существует! Итак, давайте добавим несколько новых полей!

В настоящий момент MakerBundle поддерживает только несколько основных команд. Вы можете увидеть список здесь. К сожалению, нет генератора CRUD. Но есть некоторые дискуссии об этом в вопросах, чтобы вы могли следить за тем, что будет сделано.

Если вам нужен только генератор для шаблона кода, а не более структурированное решение, такое как EasyAdminBundle, вы должны подумать о создании своего собственного производителя.

Как модифицировать Symfony Crud

Поэтому я уже некоторое время пытаюсь изменить базовую систему Symfonys для своих нужд. Однако я не понимаю, почему в форме получения они определяют сущность, а затем в посте они переписывают сущность снова?

У меня есть отношение, которое связывает элементы 1 Job со многими элементами Work, и я хотел изменить это создание create Work, чтобы оно создавалось из элемента job, а jobId передавался по маршруту dash_work_new.

Опция 1

Мне удалось загрузить сущность задания из переданной переменной и установить рабочий элемент, например, $ entity-> setWorkJob (). Большой? Нет, потому что при отправке вызывается маршрут dash_work_create и почему? рабочая сущность еще раз определена? поэтому стираю все, что я установил в методе newAction ()

Вариант 2

Поэтому я решил передать переменную как скрытое поле, а затем загрузить все данные при отправке, но зависание на createCreateForm также переопределено в createAction, поэтому, если я попытался передать переменную через createCreateForm ($ entity, $ jobId) в новом действии. Мне также нужно определить его в createAction, но у меня нет …. AH% # @@ EXPLETIVE EXPLETIVE EXPLETIVE

АХ разочарование и непонимание. Для справки: symfony workController, сгенерированный консольным сервером. Я ушел по измененному новому маршруту, который прошел путь от @route new до @route new /

Ваша помощь будет очень ценится

Решение

В вашем действии POST создается скелет формы:

Поскольку это необходимо для обработки запроса, то в последующую форму будут добавлены данные запроса:

Теперь у вас есть форма с данными, которые вы предоставили в newAction() и позже вы подтвердите это:

Теперь достаточно теории. Я вижу, что вы просто хотите пройти jobId к вашему действию POST. Самый простой способ — по URL, все, что вам нужно сделать, это изменить маршрут и действие формы. Действие POST может выглядеть так:

Ошибка при генерации CRUD в Symfony2

Здравствуйте, проблема при изменении сущности через CRUD в symfony2, сгенерил круд, ничего не трогал, захожу по /admin/post/1/edit получаю ошибку:

Я предполагаю что это из-за связного поля

Что с этим делать? Пожалуйста опишите детально.

2 ответа 2


Похоже на то. Я сейчас только читаю главу кукбука про формы, но надо либо добавить встроенную (embed) форму (вряд ли желательно — это будет полная форма пользователя), либо заставить форму проигнорировать пользователя, если пользователь всегда проставляется автоматически (поставить полю опцию ‘mapped’ => false , если не ошибаюсь), либо сделать дропдаун-меню из пользователей (тут я сам уже не подскажу).

У вас крайне странно идет связь на User-ов. В поле inversedBy нужно указывать имя филда, по которому доступа зависимая сущность, в вашем случае, я так полагаю, это будет что-то вроде posts.

И можно скинуть полный мапинг сущностей, форму и еще результат команды:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php crud symfony2 или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.9.35389

Как динамически обрабатывать роли | разрешения в Symfony2 на уровне базы данных: операции CRUD над ними

Я работаю над проектом Symfony 2.8, и у меня есть сомнения относительно прав пользователей / групп / ролей. Существует несколько способов обработки пользователей и групп, например, SonataUser поверх SonataAdmin и в последнее время EasyAdmin, но у всех из них отсутствует управление правами ROLE |, и это точно мое сомнение: как правильно их обрабатывать? Да, я знаю, что мне нужно написать их в security.yml но я не знаю, смогу ли я сохранить его в БД (где-то), а затем читать оттуда. У меня есть исследование об этом, и я нашел ACL, избирателей и т. Д., Но вместо того, чтобы ясно понять, что исследование меня очень запутывает, поэтому мне нужно оттолкнуть от людей здесь. Затем:

  • Как бы вы справились с этим?
  • Любой пример на уровне кода? (Я предпочитаю видеть что-то другое, кроме слов, чтобы получить всю суть)
  • Являются ли ROLES именами как разрешениями?

Обновление: улучшите вопрос

Я хочу иметь отношение ManyToMany между users и roles и, возможно, groups и roles . Я думаю, что, поскольку SonataUserBundle справляется с этим, создавая роли столбцов в таблице user и назначая много ролей каждому пользователю, даже создавайте новые, если я не ошибаюсь, но как насчет того, если я хочу создать столько роли, сколько могу не назначая их пользователю, а затем добавляйте много ролей для пользователя даже в группу?

Как бы Вы это сделали?

Вы можете добавлять новые роли в FOSUserBundle на ходу. Вам не нужно сначала добавлять его в файл security.yml .

Для этого вы можете сделать что-то вроде этого:

или в вашем контроллере вы можете получить текущий или любой пользователь

Это отвечает вашей первой и второй части.

Для третьей части роли могут использоваться как разрешения. Ранее я реализовал структуру, когда я ограничивал доступ к страницам на основе роли пользователя, также ограничивая, какие данные они могут изменять в зависимости от их роли.

ОБНОВЛЕНИЕ Я реализовал прослушиватель событий для этого, который будет прослушивать все запросы ядра, которые вызывают onKernelRequest . Я частично выполнил управление доступом на стороне SQL, так как у меня есть свои роли, хранящиеся на стороне SQL, но вы можете сделать то же самое на стороне сервера. Мой прослушиватель событий выглядел так: (Это урезанная версия того, что у меня есть)

Мои services.yml выглядит так

ОБНОВЛЕНИЕ Чтобы ответить на часть обновления вопроса, что вы можете сделать, это иметь другой объект roles и вы можете заранее заполнить роли, которые вы хотите, а затем установить отношение «один ко многим» к исходной таблице « User . Затем вы можете иметь что-то вроде prePersist or preUpdate Doctrine Lifecycle Events для проверки при добавлении нового, если роль уже существует в вашей роли. Это должно точно решить вашу проблему. Все это будет включать в себя небольшую настройку. Нет прямого способа сделать это.

Это зависит от того, как вы хотите это реализовать.

Внедрите UserProviderInterface в loadByUsername (где вы загружаете роли и разрешения) реализацию UserInterface (ваш User ).

Дерево в учении / symfony с CRUD


Основная задача — иметь объект, который может быть связан с другим. У меня уже есть сущность под названием «Досье», и внутри нее мне нравится иметь древовидную структуру, как для писем.

  • Будете ли вы хранить разговор таким образом?
  • Как я могу достичь дерева с помощью Doctrine?
  • Может ли Symfony создать CRUD для этого?
Мастер Йода рекомендует:  Подписи к полям ввода тег label

1 ответ

Да, ты можешь это сделать.

Мне нравится создавать стиль аннотаций, YAML как второй выбор лично. Как бы вы создавали отображение вашей сущности? Я верю, что XML — ваш другой выбор.

Кажется, что вы спрашиваете, можете ли вы иметь отношения, да, вы можете. Для этого вы используете FK или Foriegn Keys. Вы уже изучили MySQL или в чем ваш интерес?

Если вы не знаете, как разработать свою схему, есть отличная программа для MySQL под названием MySQL Workbench. Ты знаком? Вы можете использовать это для генерации простого отношения таблицы FK, тогда генерация сущностей будет следовать за этим. Регенерируйте каждый раз, когда вы вносите изменения в свою схему. Я думаю, что обратный инжиниринг сущностей из схемы — лучший способ.

Если вы пойдете по этому пути, после того, как вы разработали свою схему БД, построите таблицы, если пусто не имеет значения, вы можете таким образом провести реинжиниринг ваших сущностей. увидеть этот URL здесь

Создайте объекты сейчас

Создайте ваши методы получения и установки для любых новых свойств, не трогайте ваши методы, безопасно.

Это перенесет Иностранные Отношения. Когда вы используете Doctrine для доступа к вашим данным, вы можете делать запросы, используя отношения, как считаете нужным . Я постараюсь получить хороший пример на этот счет, у меня есть, но вот пример в противном случае.

Что касается создания CRUD, подождите, пока ваша схема и сущности не будут в рабочем состоянии, а затем выполните эту процедуру

Отредактируйте, я думал, что пользователь искал пример древовидной структуры, в отличие от дерева, эта статья в первую очередь описывает, как это сделать без дерева. упс.

Генерация CRUD в Symfony 4

После выпуска Symfony 4.0 поддержка SensioGeneratorBundle не поддерживается. следовательно, команда php app/console generate:doctrine:crud недоступна.

Они предлагают использовать MakerBundle , но я не смог найти подходящую замену для генерации CRUD.

Может ли кто-нибудь помочь?

Теперь вы можете использовать команду make в symfony4 (и это довольно хорошо!):

Он подскажет вам, для какой сущности вы хотите. Он генерирует контроллер с методами index, new, update, view и delete в /src/controller , с соответствующими шаблонами в /templates .

Полезно знать : Если вы запускаете make:entity , а затем снова запускаете эту команду и вводите существующую сущность, она отвечает:

Ваша сущность уже существует! Итак, давайте добавим несколько новых полей!

На данный момент MakerBundle поддерживает только несколько основных команд. Вы можете увидеть список здесь . К сожалению, нет генератора CRUD. Но есть некоторые обсуждение этого в вопросах, чтобы вы могли следить за тем, что будет сделано.

Если вам нужен только генератор для шаблонного кода, а не более структурированное решение, такое как EasyAdminBundle вы должны рассмотреть создание собственного производителя .

Дерево в доктрине/symfony с CRUD

Основная задача — иметь сущность, которая может быть подключена к другой. У меня уже есть объект под названием «Досье», и в этом мне нравится иметь древовидную структуру, например, для писем.

  • Не могли бы вы сохранить разговор таким образом?
  • Как я могу достичь дерева с помощью Доктрины?
  • Может ли Symfony генерировать CRUD для этого?

Создан 26 окт. 15 2015-10-26 20:18:28 LeMike


Для вашего второго вопроса обратите внимание на расширение доктрины дерева: https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md – Carlos Granados 26 окт. 15 2015-10-26 20:37:23

Также посмотрите на этот комплект: https: // github.com/FriendsOfSymfony/FOSMessageBundle – Carlos Granados 26 окт. 15 2015-10-26 20:53:53

1 ответ

Да, вы можете это сделать.

Мне нравится генерировать стиль аннотации, YAML — это второй выбор лично. Как бы вы генерировали сопоставление объектов? Я считаю, что XML — это ваш другой выбор.

Что вы спрашиваете, кажется, есть ли у вас отношение, да, вы можете. Для этого вы используете FK или Foriegn Keys. Вы заглядывали в MySQL еще, или в чем ваш интерес?

Если вы не уверены, как разработать свою схему, есть отличная программа для MySQL, называемая MySQL Workbench. Вы знакомы? Вы можете использовать это для генерации просто отношения таблицы FK, после чего последует генерация сущностей. Регенерируйте каждый раз, когда вы делаете перенастройку своей схемы. Я думаю, что обратные инженерные объекты из схемы — лучший способ.

Если вы идете по этому маршруту, как только у вас есть разработанная схема базы данных, построенные таблицы, если пустое не имеет значения, вы можете перепроектировать свои объекты таким образом. see this url here

Генерирование сущностей Теперь

Сформировать свои методы получения и установки каких-либо новых свойств, привычка трогать ваши методы, безопасны.

Это перенесет отношения Foriegn. Когда вы используете Doctrine для доступа к своим данным, вы можете запросить отношения, как вы сочтете нужным . Я пытаюсь получить хороший пример, у меня есть один, но в противном случае это пример.

Насколько делает CRUD для этого, подождите, пока вы не Схему, и лица, в рабочем состоянии, то вы будете следовать this procedure

Edit, я thougth пользователь искал пример дерево, как структура, в отличие от дерева, эта статья в основном служит, как это сделать без дерева. упс.

Создан 26 окт. 15 2015-10-26 23:31:45 blamb

Какой PHP-фреймворк выбрать: сравниваем Symfony, Laravel и Yii2

В этой статье рассматриваются три наиболее популярных PHP-фреймворка: Symfony, Laravel и Yii2. Автор сравнивает их возможности и пытается помочь читателю выбрать лучший инструмент. Статья предназначена для начинающих разработчиков, которые ещё не работали с PHP-фреймворками.

Зачем нужен PHP-фреймворк

PHP — один из самых популярных и востребованных языков программирования. Его активно используют крупные проекты, например, Facebook и «ВКонтакте». На PHP написаны популярные системы управления контентом (CMS), в том числе WordPress. На этом движке работает около трети всех сайтов в интернете и около 60 % сайтов на CMS.

PHP развивается, а версия 7 сделала этот язык стабильным. В таком случае, зачем нужны фреймворки и почему их часто используют вместо нативного языка? Вот несколько причин:

  • Фреймворки ускоряют разработку. Например, PHP-фреймворк избавляет вас от необходимости писать запросы к базам данных. В фреймворках реализованы базовые функции CRUD, которые необходимы для работы с базами данных.
  • Написанные на фреймворках приложения легко масштабируются.
  • Поддерживать легче проект на фреймворке, чем на нативном PHP. Код фреймворков лаконичный, поэтому с ним просто работать.
  • В PHP-фреймворках используется модель MVC. Она упрощает разработку.
  • Приложения на фреймворках лучше защищены, чем приложения на чистом PHP.
  • В фреймворках реализован принцип DRY. Это позволяет разработчикам писать меньше кода.

Нативный PHP позволяет делать приложения. Но перечисленных выше преимуществ достаточно, чтобы обратить внимание на фреймворки.

Как выбрать PHP-фреймворк

Выбрать фреймворк помогут ответы на следующие вопросы:

  • Какая функциональность у фреймворка, соответствует ли она нуждам проекта?
  • Насколько сложно изучать выбранный фреймворк?
  • Легко ли масштабировать проект, созданный с помощью данного фреймворка?
  • Насколько активно развивается инструмент?
  • Есть ли гарантированная долгосрочная поддержка (LTS)?
  • Есть ли активное сообщество?

Symfony, Laravel и Yii2

Перед погружением в детали коротко рассмотрим главные особенности наиболее популярных PHP-фреймворков. Это Symfony, Laravel и Yii2.


Symfony

Symfony представляет собой набор PHP-компонентов, которые подходят для повторного использования. Фреймворк позволяет делать масштабируемые и производительные приложения. API Symfony интегрируется со сторонними приложениями, а также с инструментами для фронтенд-разработки, например, Angular JS.

Symfony используют многие популярные проекты, например, Drupal и phpBB. Даже самый популярный PHP-фреймворк Laravel построен на основе Symfony.

Laravel

По состоянию на середину 2020 года это самый популярный PHP-фреймворк в мире. Текущая стабильная версия — 5.8.10. Популярность Laravel подчёркивает следующий факт: многие хостеры предлагают специальные решения для приложений, созданных с помощью этого фреймворка.

Yii был представлен в 2008 году. Это безопасный, быстрый и производительный фреймворк для разработки веб-приложений. Текущая версия — 2.0.19.

В Yii2 используется пакетный менеджер Composer для управления зависимостями. Благодаря ленивой загрузке Yii2 считается самым быстрым PHP-фреймворком.

Ещё одна особенность Yii2 — интеграция с jQuery. Благодаря этому фронтенд-разработчикам удобно работать с приложениями, созданными на Yii2. Как и в Symfony, в Yii2 используются готовые компоненты. Это ускоряет разработку.

Какой PHP-фреймворк лучше

Все перечисленные фреймворки подходят для разработки веб-приложений. Однако у этих инструментов есть отличия, которые разработчик должен учитывать. Подробности ниже.

Мастер Йода рекомендует:  Тернарные операторы JavaScript

Шаблонизаторы

Шаблонизаторы ускоряют разработку и упрощают создание фронтенда приложения. Например, с помощью шаблонизаторов решается задача автоматического экранирования HTML.

Symfony

В Symfony по умолчанию используется Twig. Это обработчик шаблонов, который позволяет писать чистый код и расширяет возможности нативного PHP. Например, Twig упрощает создание экранирующих последовательностей.

Laravel

В этом фреймворке применяется шаблонизатор Blade. Он позволяет использовать код PHP в представлениях. Blade практически не влияет на скорость работы приложений, так как представления хранятся в отдельных файлах с расширением .blade.php . Код представлений преобразуется в нативный PHP.

Этот фреймворк не использует сторонних шаблонизаторов по умолчанию. Но разработчик может выбирать инструменты в зависимости от решаемых задач. В число рекомендуемых шаблонизаторов входят Twig и Smarty.

Промежуточный вывод: по данному критерию чистого победителя нет. Все фреймворки поддерживают работу с шаблонизаторами, что ускоряет разработку фронтенда приложений. Небольшое преимущество имеет Yii2, так как в нём не используется какой-либо шаблонизатор по умолчанию.

Модульность

В Symfony есть стандартные компоненты, которые можно использовать для создания приложений. То есть Symfony — отличный пример модульного фреймворка.

В Yii2 реализован подход MVC. В этом фреймворке тоже есть компоненты, однако модульность реализована не так хорошо, как в Symphony.

Laravel уступает Symfony и Yii2 в возможности использовать модульный подход для разработки приложений.

Промежуточный вывод: если вам нужен модульный PHP-фреймворк, выбирайте Symfony.

Установка

Каждый фреймворк поддерживает несколько вариантов установки. Например, Symfony, Laravel и Yii2 можно установить с помощью пакетного менеджера Composer. Все фреймворки после установки позволяют работать с шаблонным приложением.

Промежуточный вывод: по критерию простоты установки победителей нет, каждый из трёх инструментов легко устанавливать.

Скорость разработки

Symfony считается надёжным фреймворком, за которым стоит многочисленное и активное сообщество. Laravel быстро развивается и удерживает первое место в списке самых популярных фреймворков. Yii2 обеспечивает производительность приложений.

Если вам нужно как можно быстрее создать веб-приложение, и вы никогда не работали с PHP-фреймворками, выбирайте Laravel. Его проще всего изучать, и в сети больше всего руководств именно по Laravel.


Производительность

По мнению автора оригинальной статьи, наиболее производительным фреймворком является Yii2. Это оптимальный выбор для создания высоконагруженных приложений.

Производительность Laravel — дискутабельный вопрос. По этому критерию он уступает Yii2 и Symfony. Тем не менее в сети можно найти много рекомендаций по ускорению приложений на Laravel.

Поддержка баз данных

По этому критерию бесспорным лидером становится Symfony. Yii2 и Laravel отстают. Конкретную информацию можно увидеть в таблице.

Laravel Yii2 Symfony
Microsoft BI Microsoft BI Apache Jackrabbit
MongoDB MongoDB CouchDB
MySQL MySQL DynamoDB
PostgreSQL PostgreSQL GraphDB
Redis Redis MemBase
SQLite SQLite MemCasheDB
Microsoft BI
MySQL
MongoDB
NoSQL
Oracle
PostgreSQL

Сообщество и ресурсы

Многочисленное активное сообщество можно считать гарантией долгосрочной поддержки и развития инструмента. Вокруг рассматриваемых фреймворков сформированы большие сообщества. Комьюнити Symfony можно назвать наиболее зрелым.

Важный момент — будущее фреймворка лучше оценивать не по статичной величине сообщества, а по его динамике и активности.

Если оценивать такой ресурс, как документацию и обучающие материалы, здесь лидером будет Laravel.

Расширяемость

Функциональность фреймворков увеличивается с помощью расширений или пакетов. По этому критерию лидером остаётся Laravel. В каталоге Packalyst можно найти около 9000 пакетов для Laravel.

Yii2 и Symfony могут похвастаться 2800 и 2830 расширениями соответственно. Если для вас важна возможность расширить стандартную функциональность фреймворка с помощью дополнительных пакетов, выбор очевиден.

Схожесть характеристик

Выше мы рассматривали разницу между фреймворками. Пришло время сосредоточиться на похожих характеристиках. Вот они:

  • Все три инструмента относятся к fullstack-фреймворкам. Они обеспечивают полный цикл разработки веб-приложения, включая фронтенд и бэкенд.
  • Это проекты с открытым исходным кодом, который можно найти на GitHub.
  • За Symfony, Laravel и Yii2 стоят многочисленные активные сообщества.
  • Все три фреймворка поддерживают объектно-реляционное отображение (ORM). Поэтому эти инструменты удобно использовать в парадигме объектно-ориентированного программирования.
  • Перечисленные фреймворки представляют собой надёжные и безопасные инструменты для создания веб-приложений.

Всё ещё не можете выбрать фреймворк? Вот тезисная информация, которая поможет определиться.

  • есть LTS версии фреймворка;
  • широкая функциональность из коробки;
  • это самый стабильный фреймворк;
  • есть готовые компоненты, что позволяет использовать при создании приложений модульный подход.
  • поддерживает Ajax;
  • обеспечивает быстродействие и производительность приложений;
  • легко расширяемый фреймворк;
  • есть встроенный обработчик ошибок;
  • подходит для разработки веб-сервисов, построенных с учётом REST (RESTful web-service).
  • самый популярный PHP-фреймворк;
  • есть встроенный пакетный менеджер Composer;
  • поддержка юнит-тестирования из коробки;
  • большое количество пакетов для расширения функциональности.

Заключение

Symfony, Laravel и Yii2 можно назвать отличными инструментами для разработки веб-приложений. Автор оригинальной статьи предпочитает Laravel. В то же время он считает Symfony и Yii2 не менее мощными инструментами. Особенностью Symfony можно назвать развитое сообщество, а особенностью Yii — надёжность и безопасность.

Пожалуйста, напишите в комментариях, какой PHP-фреймворк выбираете вы.

Адаптированный перевод статьи Michael J. Garbade How to choose a PHP framework. Мнение автора оригинальной публикации может отличаться от мнения администрации и сотрудников Хекслета.

CRUD with Symfony2


In this tutorial I will show a simple CRUD application with Symfony2. I will use mostly command prompt. So, to prepare your system for this tutorial please read previous tutorial. Otherwise, it will confusing for you.

Before start we need to clear some ideas, like MVC. Hope you already have enough understanding with MVC pattern.

Model (M) : it connect with database and handle data and contain business logic.
View (V) : contains the html, colours and images.
Controller (C) : mainly interact with database and view.

For the model Symfony2 use(default) ORM for its tasks called entity. Now question is what is ORM?

ORM?

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer science is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a “virtual object database” that can be used from within the programming language. There are both free and commercial packages available that perform object-relational mapping, although some programmers opt to create their own ORM tools. And we will use Doctrine for our ORM.

At the beginning it would be intimidating. But, by the time being you will see the usefulness of it.

And in the view we will use twig.

Twig.

Twig is a template engine for PHP. It is fast, secure and flexible. And you will also see the simplicity of twig when you are going to use it.

So lets plan for our CRUD project. We will create a single table database for our Book inventory. It will contains following informations –

name
author
language
publisher
summary

Now, start with a fresh installation of Symfony2.

Something about Bundle
We need to create our project bundle. Bundle contains all the necessary project source code.
A bundle is also a PHP namespace. The namespace must follow the technical interoperability standards for PHP 5.3 namespaces and class names: it starts with a vendor segment, followed by zero or more category segments, and it ends with the namespace short name, which must end with a Bundle suffix.

A namespace becomes a bundle as soon as you add a bundle class to it. The bundle class name must follow these simple rules:

– Use only alphanumeric characters and underscores;
– Use a CamelCased name;
– Use a descriptive and short name (no more than 2 words);
– Prefix the name with the concatenation of the vendor (and optionally the category namespaces);
– Suffix the name with Bundle.

Here are some valid bundle namespaces and class names:

Namespace Bundle Class Name
Acme\Bundle\BlogBundle AcmeBlogBundle
Acme\Bundle\Social\BlogBundle AcmeSocialBlogBundle
Acme\BlogBundle AcmeBlogBundle

So, let’s create our book inventory with namespaces and bundle.

Step 1:
Open your command prompt and go to your project folder called “symfony”. (we have created it previous tutorial)

$ php app/console generate:bundle —namespace=Custom/BookBundle

You will found something like –

Welcome to the Symfony2 bundle generator

In your code, a bundle is often referenced by its name. It can be the
concatenation of all namespace parts but it’s really up to you to come
up with a unique name (a good practice is to start with the vendor name).
Based on the namespace, we suggest CustomBookBundle.

Bundle name [CustomBookBundle]: CustomBookBundle

The bundle can be generated anywhere. The suggested default directory uses
the standard conventions.

Target directory [/xampp/htdocs/sfy/symfony/src]:

Determine the format to use for the generated configuration.


Configuration format (yml, xml, php, or annotation): yml

To help you get started faster, the command can generate some
code snippets for you.

Do you want to generate the whole directory structure [no]? yes

Summary before generation

You are going to generate a «Custom\BookBundle\CustomBookBundle» bundle
in «/xampp/htdocs/sfy/symfony/src/» using the «annotation» format.

Do you confirm generation [yes]?

Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]?
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]?
Importing the bundle routing resource: OK

You can now start using the generated code!

Now open your browser and go to –

Let’s discuss about what we have done so far.

  • We have created our project bundle with command prompt
  • By default it creates one controller called “DefaultController” inside /src/Custom/BookBundle/Controller/ folder and default indexAction takes one argument. Let’s change it to –
  • The DefaultControler and indexAction is called from routing and it written in yml. It’s located in “/src/Custom/BookBundle/Resources/config/routing.yml“. lets change this one as well to –

custom_book_homepage:
path: /hello
defaults:

  • The view exists inside “/src/Custom/BookBundle/Resources/views/Default/index.html.twig“. Let’s change this one as well –
  • Now hello is not taking any argument.

    Step 2:

    $ php app/console doctrine:generate:entity

    Welcome to the Doctrine2 entity generator

    This command helps you generate Doctrine2 entities.

    First, you need to give the entity name you want to generate.
    You must use the shortcut notation like AcmeBlogBundle:Post.

    The Entity shortcut name: CustomBookBundle:Book
    C←[K←7ustomBookBundle←8u←[K←7stomBookBundle←8s←[K←7tomBookBundle←8t←[K←7omBookBu
    ndle←8o←[K←7mBookBundle←8m←[K←7BookBundle←8B←[K←7ookBundle←8o←[K←7okBundle←8o←[K
    ←7kBundle←8k←[K←7Bundle←8B←[K←7undle←8u←[K←7ndle←8n←[K←7dle←8d←[K←7le←8l←[K←7e←8
    e←[K:←[KB←[Ko←[Ko←[Kk←[K

    Determine the format to use for the mapping information.

    Configuration format (yml, xml, php, or annotation) [annotation]: annotation
    a←[K←7nnotation←8n←[K←7notation←8n←[K←7otation←8o←[K←7tation←8t←[K←7ation←8a←[K←
    7tion←8t←[K←7ion←8i←[K←7on←8o←[K←7n←8n←[K

    Instead of starting with a blank entity, you can add some fields now.
    Note that the primary key will be added automatically (named id).

    Available types: array, simple_array, json_array, object,
    boolean, integer, smallint, bigint, string, text, datetime, datetimetz,
    date, time, decimal, float, blob, guid.

    New field name (press to stop adding fields): name
    Field type [string]:

    Field length [255]:


    New field name (press to stop adding fields): author
    Field type [string]:

    Field length [255]: 200

    New field name (press to stop adding fields): language
    Field type [string]:

    Field length [255]: 100

    New field name (press to stop adding fields): publisher
    Field type [string]:

    Field length [255]: 100

    New field name (press to stop adding fields): summary
    Field type [string]: text
    t←[K←7ext←8e←[K←7xt←8x←[K←7t←8t←[K

    New field name (press to stop adding fields):

    Do you want to generate an empty repository class [no]?

    Summary before generation

    You are going to generate a «CustomBookBundle:Book» Doctrine2 entity
    using the «annotation» format.

    Do you confirm generation [yes]?

    Generating the entity code: OK

    You can now start using the generated code!

    First of create a database with phpmyadmin call “sym” and run the following command –

    $ php app/console doctrine:schema:update —force

    Updating database schema.
    Database schema updated successfully! «1» queries were executed

    $ php app/console generate:doctrine:crud

    Welcome to the Doctrine2 CRUD generator

    This command helps you generate CRUD controllers and templates.

    First, you need to give the entity for which you want to generate a CRUD.
    You can give an entity that does not exist yet and the wizard will help
    you defining it.

    You must use the shortcut notation like AcmeBlogBundle:Post.

    The Entity shortcut name: CustomBookBundle:Book

    By default, the generator creates two actions: list and show.
    You can also ask it to generate «write» actions: new, update, and delete.

    Do you want to generate the «write» actions [no]? yes

    Determine the format to use for the generated CRUD.

    Configuration format (yml, xml, php, or annotation) [annotation]: yml

    Determine the routes prefix (all the routes will be «mounted» under this
    prefix: /prefix/, /prefix/new, . ).

    Routes prefix [/book]:


    Summary before generation

    You are going to generate a CRUD controller for «CustomBookBundle:Book»
    using the «yml» format.

    Do you confirm generation [yes]?

    Generating the CRUD code: OK
    Generating the Form code: OK
    Confirm automatic update of the Routing [yes]?
    Importing the CRUD routes: OK

    You can now start using the generated code!

    Now open your browser and go to –

    Your crud is done. Populate data to your Symfony2 web app.

    If you open your project folder with your IDE, you will see one BookController is created inside “/src/Custom/BookBundle/Controller/

    Open “/src/Custom/BookBundle/Entity/” folder. Book.php contains all Doctrine for our ORM support.

    And in “/src/Custom/BookBundle/Resources/views/Book/” folder all the twig files exists for our view.

    By the way, you can download all the code from my –
    Git Ripo

    In this tutorial we have used command prompt to generate code. From next tutorial, we will analyze each part of the code gradually.

    CRUD with Symfony2

    Hej, I’m from Bangladesh. Learning programming is one of the freaking decisions I have taken in my life. Because, it makes me and my life crazy. I have great weakness on open source technologies. Perhaps, that’s why I do not know any closed source language. I fall in love with programming, when I started my undergraduate in East West University. Till now, I can not live without it.

    Дерево в доктрине/symfony с CRUD

    Основная задача — иметь сущность, которая может быть подключена к другой. У меня уже есть объект под названием «Досье», и в этом мне нравится иметь древовидную структуру, например, для писем.

    • Не могли бы вы сохранить разговор таким образом?
    • Как я могу достичь дерева с помощью Доктрины?
    • Может ли Symfony генерировать CRUD для этого?

    Создан 26 окт. 15 2015-10-26 20:18:28 LeMike

    Для вашего второго вопроса обратите внимание на расширение доктрины дерева: https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md – Carlos Granados 26 окт. 15 2015-10-26 20:37:23

    Также посмотрите на этот комплект: https: // github.com/FriendsOfSymfony/FOSMessageBundle – Carlos Granados 26 окт. 15 2015-10-26 20:53:53

    1 ответ

    Да, вы можете это сделать.

    Мне нравится генерировать стиль аннотации, YAML — это второй выбор лично. Как бы вы генерировали сопоставление объектов? Я считаю, что XML — это ваш другой выбор.

    Что вы спрашиваете, кажется, есть ли у вас отношение, да, вы можете. Для этого вы используете FK или Foriegn Keys. Вы заглядывали в MySQL еще, или в чем ваш интерес?

    Если вы не уверены, как разработать свою схему, есть отличная программа для MySQL, называемая MySQL Workbench. Вы знакомы? Вы можете использовать это для генерации просто отношения таблицы FK, после чего последует генерация сущностей. Регенерируйте каждый раз, когда вы делаете перенастройку своей схемы. Я думаю, что обратные инженерные объекты из схемы — лучший способ.

    Если вы идете по этому маршруту, как только у вас есть разработанная схема базы данных, построенные таблицы, если пустое не имеет значения, вы можете перепроектировать свои объекты таким образом. see this url here

    Генерирование сущностей Теперь

    Сформировать свои методы получения и установки каких-либо новых свойств, привычка трогать ваши методы, безопасны.

    Это перенесет отношения Foriegn. Когда вы используете Doctrine для доступа к своим данным, вы можете запросить отношения, как вы сочтете нужным . Я пытаюсь получить хороший пример, у меня есть один, но в противном случае это пример.

    Насколько делает CRUD для этого, подождите, пока вы не Схему, и лица, в рабочем состоянии, то вы будете следовать this procedure

    Edit, я thougth пользователь искал пример дерево, как структура, в отличие от дерева, эта статья в основном служит, как это сделать без дерева. упс.

    Создан 26 окт. 15 2015-10-26 23:31:45 blamb

    Мастер Йода рекомендует:  Разработчики теперь могут выпускать приложения и ботов в пространстве Microsoft Teams
    Добавить комментарий