2015-07-12 2 views
1

Мой вопрос - если я создаю пользователя в моем полевом наборе - firstname + lastname. если я обновляю поля firstname и lastname slug, не меняются, почему? И что мне нужно сделать для этой проверки? Поскольку я использую поле пробкового (имя пользователя) в моей маршрутизации у меня есть:Как сбросить обновление, если я обновляю объект

class SUser implements UserInterface 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @Gedmo\Slug(fields={"firstName", "lastName"}, separator="-") 
* @ORM\Column(name="name", type="string", length=255, nullable=false) 
* @Assert\Length(min=3, max=255) 
*/ 
protected $username; 

моя форма:

class DeveloperPersonalInformationType extends AbstractType 
{ 
/** 
* @param FormBuilderInterface $builder 
* @param array    $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('firstname', null, array('label' => 'First Name', 'max_length' => 255, 'required' => false)) 
     ->add('lastname', null, array('label' => 'Last Name', 'max_length' => 255, 'required' => false)) 

Теперь я использую пользовательский вариант, сначала нужен получить ПгвЬЫате и LastName конца набора в имени пользователя, но я хотите использовать @Gedmo \ Slug, как это сделать? Мои действия:

public function submitPersonalInformationAction($username) 
    { 
    $em = $this->getDoctrine()->getManager(); 
    $request = $this->get('request'); 
    $profileRepository = $this->get('artel.profile.developer.repository'); 
    $developer = $profileRepository->findOneByUsername($username); 


    $form = $this->createForm(new DeveloperPersonalInformationType(), $developer); 
    $form->handleRequest($request); 

    if ($form->isValid()) 
    { 
     $name = $developer->getFirstName().'-'.$developer->getLastName(); 
     $developer->setUsername($name); 
     $em->flush(); 

     return $this->redirect($this->generateUrl('artel_profile_homepage', array('username' => $name)) .'#personal-information'); 
    } 

И мой roting:

artel_profile_submit_personal_information: 
path:  /profile/{username}/personal_information/submit 
defaults: { _controller: ArtelProfileBundle:DeveloperProfile:submitPersonalInformation } 
requirements: { _method: post } 

мой конфиг:

stof_doctrine_extensions: 
default_locale: "%locale%" 
orm: 
    default: 
     timestampable: true 
     sluggable:  true 
+0

Его нормальная но, и если вы обновляете поля в базе данных, вы меняете slug? –

ответ

0

вы установили поле пробкового обнулить для того, чтобы обновить

https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sluggable.md#regenerating-slug

+0

Я не понимаю, добавляю в свое действие, перед тем, если form-> isValid '$ developer-> setUsername (null); $ em-> flush(); ' и теперь у меня в поле slig null. Где нужно поставить этот код '$ developer-> setUsername (null); $ em-> flush(); ' ?? –

+0

Я использую это: 'if ($ form-> isValid()) { $ name = $ developer-> getFirstName() .'- '. $ Developer-> getLastName(); $ developer-> setUsername ($ name); $ em-> flush(); return $ this-> redirect ($ this-> generateUrl ('artel_profile_homepage', array ('username' => $ name)). '# Personal-information'); } ' и этот код работает, но я хочу использовать @Gedmo \ Slug –

0

Pr obably что-то вроде этого:

if ($form->isValid()) 
{ 
    $developer->setUsername(Null); 
    $em->flush($developer); 

    return $this->redirect($this->generateUrl('artel_profile_homepage', array('username' => $name)) .'#personal-information'); 
} 

Но я заметил, проверял его.

+0

Я тестировал поле« username »= null –

 Смежные вопросы

  • Нет связанных вопросов^_^