2015-07-17 2 views
0

Я бы хотел обработать $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(); такой же, как этот, и сохранить данные и сохранить данные из модального класса. Это возможно? или есть альтернативный способ сделать это?

Поскольку моя таблица построена с полями только с ключом и значением, я бы не захотел вручную устанавливать эти имена внутри контроллера, я бы предпочел внешний вид, поэтому я могу позже изменить модальные или другие классы, и он автоматически изменит метод внутри контроллера ,

ответ

0

На мой взгляд, наилучшим подходом было бы создать Entity Repository , после чего вы сможете сохранить свой контроллер в чистоте.

же, как это и обрабатывать данные сохранять и обновлять из модального класса

Вы хотите обрабатывать обновления от класса модели? Или я понял неправильно.

+0

Я не уверен, как репозиторий сущностей будет решать проблему ключа и стоимости. Я пытаюсь построить конфигурацию на основе ключа и значения, поэтому каждый ключ и значение будут находиться в отдельной строке, мне нужно найти ключ и сохранить ключ, сохраняя как можно более динамичный код, потому что ключи и значения могут измениться позже , – Basit