В проекте симфони, у меня есть шаблон URL, как этотMapping пробкового с записью базы данных
/resource/{id}
я могу преобразовать это sluggified URL, как
/resource/{slug}
с использованием документации, приведенной в symfony webiste.
Но, я еще не знаю, как это сделать {slug}
к записи в базе данных. Есть ли какой-либо стандартный способ сделать это, кроме создания переменной slug
в классе сущности и сохранения ее в базе данных, а затем получения записи с использованием этого свойства?
UPDATE
Я не знаю, как Symfony является извлечение данных из базы данных. Мое действие выглядит следующим образом.
/**
* Finds and displays a Resource entity.
*
* @Route("/{slug}", name="resource_show")
* @Method("GET")
*/
public function showAction(Resource $resource)
{
$deleteForm = $this->createDeleteForm($resource);
return $this->render('resource/show.html.twig', array(
'resource' => $resource,
'delete_form' => $deleteForm->createView(),
));
}
Я только что заменил id
с slug
в контроллере после внесения изменений в соответствующие ResourceEntity
. Теперь Symfony автоматически извлечения информации из базы данных с помощью slug
и передается showAction
метод ..
Что такое 'findBySlug' в вашем сегменте кода? Это что-то автогенерированное symfony? Или создать настраиваемый метод? – niyasc
@niyasc Doctrine предоставляет findOneBy *() findBy *(), где вы можете заменить * действительным свойством (имя столбца) – Vamsi