Ручная установка isNew () для объекта - PullRequest
1 голос
/ 25 января 2011

Я работаю с Symfony 1.4 и propel, у меня есть форма для создания или обновления продуктов, а для действия формы у меня есть этот код ...

<form action="<?php echo url_for('products/'.($form->getObject()->isNew() ? 'create' : 'update').(!$form->getObject()->isNew() ? '?id='.$form->getObject()->getId() : '')) ?>" method="post" ?>>

, так что если объект продуктаесли он новый, то он переходит к products / create, но если продукт уже существует, он переходит к products / update? id = productID.

Все это прекрасно работает, но проблема в том, что у меня есть ссылка на продукты под названием«Новая версия» Когда вы нажимаете эту кнопку, ей нужно взять все данные из текущего продукта и заполнить ею форму, поэтому пользователю просто нужно внести любые необходимые изменения, а затем сохранить их как новую запись в базе данных.Проблема в том, что когда данные отправляются в форму через объект, isNew имеет значение false, поэтому они переходят на страницу обновления вместо create.

Метод для копирования:

  public function executeCopy(sfWebRequest $request)
      {
        $this->forward404Unless($PlatformProduct = PlatformProductPeer::retrieveByPk($request->getParameter('id')), sprintf('Object PlatformProduct does not exist (%s).', $request->getParameter('id')));
        $this->form = new PlatformProductForm($PlatformProduct);

        $this->setTemplate('new');
      }

Это отправляет данные в форму просто отлично, но я в растерянности из-за того, как заставить их вернуть isNew как истина, так что он создаетновая запись.Я довольно новичок в Symfony, и я работал с Cake раньше, в торт было так же просто, как если бы ID был установлен, он будет обновляться при сохранении, если ID не установлен, он будет вставляться при сохранении.

1 Ответ

1 голос
/ 25 января 2011

Ваша ссылка может добавить скрытый параметр в форму. И параметр может быть проверен действием, обновляющим объект. Если он установлен, то создайте новый объект вместо обновления старого. Информация о формах Symfony находится здесь http://www.symfony -project.org / forms / 1_4 / ru /

...