• Как заменить url типа — «/page.php?id=4» на «/contact» и т.п.?

    @v7sila
    Можно сделать таблицу в базе данных url_alias, а в ней 3 столбца
    id | query | keyword
    1 |page_id=4| contact
    Далее сопоставлять и делать редирект на нужный url с передачей параметра id
    Ответ написан
  • Валидация части объекта Symfony?

    @v7sila Автор вопроса
    Действительно. Не стоит использовать сущность для валидации. Сущность должна быть всегда валидной.

    Использовал отдельный класс для валидации пароля.
    namespace AppBundle\Entity;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Password
    {
        /**
    	 *
    	 * @Assert\Length(
    	 *      min = 6,
    	 *      max = 64,
    	 *      minMessage = "Пароль должен содержать не меньше {{ limit }} символов",
    	 *      maxMessage = "Пароль должен содержать не меньше {{ limit }} символов"
    	 * )
    	 * * @Assert\NotBlank(
    	 *     message="Пароль не должен быть пустым"
    	 * )
         * @var string
         */
        private $password;
    
    
        /**
         * Set password
         *
         * @param string $password
         *
         * @return Password
         */
        public function setPassword($password)
        {
            $this->password = $password;
    
            return $this;
        }
    
        /**
         * Get password
         *
         * @return string
         */
        public function getPassword()
        {
            return $this->password;
        }
    }

    В контроллере
    public function newPasswordAction(Request $request){
    		$password = new Password();
    		$form = $this->createForm(NewPassword::class, $password);
    		/........./
    	}


    Класс формы
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
    use Symfony\Component\Form\Extension\Core\Type\PasswordType;
    use Symfony\Component\Form\Extension\Core\Type\HiddenType;
    
    class NewPassword extends AbstractType
    {
    	public function buildForm(FormBuilderInterface $builder, array $options)
    	{
    		$builder
    			->add('password', RepeatedType::class, array(
    				'type' => PasswordType::class,
    				'invalid_message' => 'Поля паролей должны совпадать.',
    				'options' => array('attr' => array('class' => 'password-field')),
    				'required' => true,
    				'first_options'  => array('label' => 'Новый пароль'),
    				'second_options' => array('label' => 'Повторение нового пароля'),
    			))
    			->add('save', SubmitType::class)
    			->add( 'new_password_hidden' ,  HiddenType :: class, [
    				'mapped' => false,
    			])
    		;
    	}
    }
    Ответ написан
    Комментировать