Создайте свое первое простое приложение с symfony 2 и создайте combobox для поля поиска.Создайте combox как поле поиска в Symfony 2
Приложение состоит из назначений, имеющих местоположение. Каждая встреча может иметь одно местоположение, расположение разделяется на все встречи.
Вот моя текущая работа:
class Appointment
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
// other fields here
/**
* @ORM\ManyToOne(targetEntity="Location")
* @ORM\JoinColumn(name="location_id", referencedColumnName="id")
*/
private $location;
// more stuff here
}
/**
* Location
*
* @ORM\Table()
* @ORM\Entity
*/
class Location
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
// other fields here
}
Затем я создал типы для моих классов:
class AppointmentType extends AbstractType
{
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// other field here
->add('location', 'text')
;
$builder->get('location')
->addModelTransformer(new LocationToNumberTransformer($this->manager));
}
...
}
LocationToNumberTransformer
класс преобразует идентификатор местоположения в текстовое поле.
Вот шаблон HTML:
<div class="row">
<!-- other fields go here -->
<div class="small-2 columns">{{ form_row(appointment.location) }}</div>
</div>
Это все работает отлично. Я могу создать встречи, заполняющие текстовое поле местоположения, с действительным идентификатором. Позже местоположения будут просто небольшим количеством, поэтому Я бы хотел, чтобы имел поле combobox или dropdown, которое показывает все доступные места, и я могу выбрать один.
Я также создал простой контроллер местоположения, который дает мне список всех мест:
class LocationsController extends Controller
{
public function activeLocationsAsChoiceAction(Request $request, $selectedId = -1) {
$em = $this->getDoctrine()->getManager();
$locations = $em->createQuery('SELECT l FROM AppBundle:Location l')->execute();
return $this->render('locations/active_list_as_choice.html.twig', array(
'locations' => $locations,
'selected_id' => $selectedId,
));
}
}
С его помощью я могу вынести выберите вход. Может быть, это не обязательно, но в конечном итоге Я не знаю, как собрать детали.
Спасибо, я знал, что это может быть так просто, но мой поиск не нашел подсказки в этом направлении. – Mik
Без проблем, человек! :) –