Я бы хотел обработать $doctrine->presist($modal);
для сохранения цели. Это возможно?Symfony2 modal presist
Ниже приведен пример.
Модальный класс, выполненный из ключей конфигурации и значений.
AmazonsS3Setting.php, как Modal
<?php
namespace Eggs\BusinessPanelBundle\Form\Model;
use Eggs\CoreBundle\Entity\Business;
use Symfony\Component\Validator\Constraints as Assert;
class AmazonS3Setting
{
private $storageAwsAccessKey;
private $storageAwsSecretKey;
private $storageAwsBucketName;
private $business;
/**
* @param Business $business
*/
public function __construct (Business $business)
{
$this->business = $business;
$this->storageAwsAccessKey = $business->getConfigValueByKey('storageAwsAccessKey');
$this->storageAwsSecretKey = $business->getConfigValueByKey('storageAwsSecretKey');
$this->storageAwsBucketName = $business->getConfigValueByKey('storageAwsBucketName');
}
/**
* @return mixed
*/
public function getStorageAwsAccessKey()
{
return $this->storageAwsAccessKey;
}
/**
* @param mixed $storageAwsAccessKey
*/
public function setStorageAwsAccessKey ($storageAwsAccessKey)
{
$this->storageAwsAccessKey = $storageAwsAccessKey;
}
/**
* @return mixed
*/
public function getStorageAwsSecretKey()
{
return $this->storageAwsSecretKey;
}
/**
* @param mixed $storageAwsSecretKey
*/
public function setStorageAwsSecretKey ($storageAwsSecretKey)
{
$this->storageAwsSecretKey = $storageAwsSecretKey;
}
/**
* @return mixed
*/
public function getStorageAwsBucketName()
{
return $this->storageAwsBucketName;
}
/**
* @param mixed $storageAwsBucketName
*/
public function setStorageAwsBucketName ($storageAwsBucketName)
{
$this->storageAwsBucketName = $storageAwsBucketName;
}
}
AmazonsS3SettingType.php в Form Type
<?php
namespace Eggs\BusinessPanelBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class AmazonS3SettingType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('storageAwsAccesskey', 'text', ['label' => 'Access Key'])
->add('storageAwsSecretkey', 'text', ['label' => 'Secret Key'])
->add('storageAwsBucketname', 'text', ['label' => 'Bucket Name'])
//->add('baseurl', 'text', ['label' => 'Bucket Base Url', 'help' => 'your-business-account.s3.amazonaws.com'])
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Eggs\BusinessPanelBundle\Form\Model\AmazonS3Setting'
));
}
/**
* @return string
*/
public function getName()
{
return 'business_amazons3setting';
}
}
метод Контроллер для settings
/**
* @Route("/storage", name="business_setting_storage")
* @Template("@BusinessPanel/Setting/storageS3.html.twig")
*/
public function storageAction(Request $request)
{
$business = $this->getUser();
$storage = new AmazonS3Setting($business);
$form = $this->createForm(New AmazonS3SettingType(), $storage)->add('Save', 'submit');
$form->handleRequest($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->persist($storage);
$em->flush();
$this->addFlash('success', 'Saved Successfully');
}
return [
'form' => $form->createView()
];
}
Я хотел был бы сохранить $em->presist($storage)
и $em->flush();
такой же, как этот, и сохранить данные и сохранить данные из модального класса. Это возможно? или есть альтернативный способ сделать это?
Поскольку моя таблица построена с полями только с ключом и значением, я бы не захотел вручную устанавливать эти имена внутри контроллера, я бы предпочел внешний вид, поэтому я могу позже изменить модальные или другие классы, и он автоматически изменит метод внутри контроллера ,
Я не уверен, как репозиторий сущностей будет решать проблему ключа и стоимости. Я пытаюсь построить конфигурацию на основе ключа и значения, поэтому каждый ключ и значение будут находиться в отдельной строке, мне нужно найти ключ и сохранить ключ, сохраняя как можно более динамичный код, потому что ключи и значения могут измениться позже , – Basit