Я хочу построить контроллер, который будет загружать данные из базы данных и создавать из нее форму, но в зависимости от слага.
public function form($slug, Request $request){
$EntityName = 'App\\Entity\\' . ucwords($slug);
$item= $this->getDoctrine()->getRepository($EntityName)->find($id);
$form = $this->createFormBuilder($item)
Таким образом, это означает, что если slug, например, products
, то я хочу построить форму из моей таблицы базы данных `products со всеми полями, которые находятся внутри этой таблицы:
Так что в products
у меня есть, например, поля id, name, color
. Таким образом, выход мне нужно будет
->add('id', TextType::class, array('attr' => array('class' => 'form-control')))
->add('name', TextType::class, array('attr' => array('class' => 'form-control')))
->add('color', TextType::class, array('attr' => array('class' => 'form-control')))
Но если мой slug, например, members
, а в моей таблице members
поля id, username, email
, то должна быть построена форма с этими полями:
->add('id', TextType::class, array('attr' => array('class' => 'form-control')))
->add('username', TextType::class, array('attr' => array('class' => 'form-control')))
->add('email', TextType::class, array('attr' => array('class' => 'form-control')))
Проблема для меня сейчас в том, как создать эти поля, которые зависят от слага. Я думал как-то получить поля от объекта $item
. Это объект $item
:
object(App\Entity\Members)#4788 (6) {
["id":"App\Entity\Members":private]=>
int(9)
["username":"App\Entity\Members":private]=>
string(13) "123"
["plainPassword":"App\Entity\Members":private]=>
NULL
["password":"App\Entity\Members":private]=>
string(0) ""
["email":"App\Entity\Members":private]=>
string(7) "1@12.sw"
["isActive":"App\Entity\Members":private]=>
bool(true)
}
Я пытался работать с get_object_vars
, но это не работает с частными объектами, поэтому я думаю, что это не очень хорошее решение. Я также попытался создать массив ($array = (array) $item;)
из объекта для построения структуры формы с помощью foreach. Но это тоже не похоже на правильный путь.
Есть ли у вас опыт работы с функциями, которые динамически загружают данные из таблиц базы данных и создают форму? Я рад за каждую идею или совет.