Symfony Formu Çerçeve - parola değiştirme işlevselliğini uygulamak için en iyi yolu?

4 Cevap php

Ben form framework in Symfony 1.4 etrafında başımı almak için çalışıyorum. Ben 'symfony ile daha' kitabında inanılmaz detailed section okudum, ama ben yine de basit bir 'Şifre değiştir' işlevselliğini uygulamak için nasıl bir ama emin değilim.

Gereksinimleri oldukça basit,

  1. Orada iki alan, new_password, ve confirm_new_password edeceğiz. Her iki giriş alanları olacak.
  2. new_password alan harf ve rakamları içeren 6 ile 30 karakter arasında bir dize olması doğrulanmış olacaktır.
  3. confirm_new_password alan tam new_password alanını maç doğrulanmış olacaktır.

Şimdi, şu anda ben, bu uygulamaya

  • Benim form için 2 yeni alanlar ekleyerek.
  • Dize uzunluğunu kontrol etmek için new_password alanına bir dize doğrulayıcı ekleme.
  • Emin içeri doluydu yapmak için confirm_new_password alanına bir dize doğrulayıcı ekleme
  • Ve sonra yeni bir şifre doğrulama geçerlidir ve özel yazılan doğrulayıcısındaki onaylamak şifreyi eşleşir. new_password alanı geçerli yaşıma kadar confirm_new_password alanını doğrulamak istemiyordu çünkü ben yaptım.

Şimdi to the point of my question. Yukarıda belirtilen makaleyi okuduktan sonra, ben onlar ağır birbirlerine güvenmek ve biri olmadan diğeri işe yaramaz gibi ben bir tek Widget ya ya da bir alt formda iki alanları içermelidir düşünmeye başlıyorum.

Ben insanların düşünceleri bu vardı merak ve birisi bunu nasıl yaptığını birini, hayata olsaydı? Edildi

Teşekkürler

Bu benim yönetici alanı için olduğu kadar Note: hayır current_password alan vardır.

4 Cevap

Birkaç kişi sfGuardPlugin bakarak önerdi. Bunu yaptıktan sonra ben hemen hemen tam olarak ben şu anda bunu uygulayan kulüpler nasıl parola değiştirme özelliğini uygular fark ettim.

Cevaplar için teşekkürler!

Sen sfDoctrineGuardPlugin kullanabilirsiniz.

Bu eklenti web sitesi kullanıcı yönetimi için uygun formlar, model ve kontrol sağlar.

Bu eklenti uzatır, sizin ihtiyaçlarınıza göre özelleştirmek, bu çok yaygın olarak kullanılan eklentisi (en çok kullanılan) 'dir.

Ben Symfony 1.2 için şifre validator çeşit (ben 1.4 için test değil) yarattı. Sen ona bir göz atabilirsiniz here.

Temel özellikleri şunlardır:

  • Bir düzenli ifade ya da birden çok normal ifadeler karşı parolayı doğrular.
  • Her iki alanda değerleri aynı olup olmadığını karşılaştırır.
  • Bir parola ayarlanmış ise (parola değişikliği alanlar alanlar bir şifreyi değiştirmek istemiyorsa boş bir profil şeklinde entegre eğer uygun), şifre alanları doğrulamak için doldurulması gerekmez .

Kullanmak için iki giriş alanları kurmak ve bu iki alan için yazılan onaylayıcısı olarak doğrulayıcı eklemek zorunda.

Bu tam olarak ne istediğinizi değil, ama belki size bir başlangıç ​​verir.

Ben zaten sizin için bu işlemek için inşa şey duymadım.

Custom widget and validator

Bu sürece size alanları ile ilişkili tek bir etiket ile bu ulaşmanın ile iyi konum olarak iki form alanları saklanması için özel bir widget'ı oluşturabilirsiniz. Bunun için özel bir doğrulayıcı yaratmak istiyorsa alan validators sadece doğrulamak için bir değer almak gibi (bir örnek için sfValidatorSchemaCompare bakınız) sonrası bir validator olurdu. Bu yaklaşım sayesinde kazanıyor sona ereceğini:

  • Lütfen formda daha az bir widget'ı tanımlayan
  • ayrı bir sınıfa sonrası validator işlevselliği hareketli

ve kaybı:

  • Lütfen onayla şifre alanı için bir etiket

Embedded form

Bir gömülü formu şifre olarak, bu bana yanlış gibi görünüyor / onaylamak alanları üst öğenin bir alt bölüm değildir.

Inheritance

Sizin için çalışabilir bir başka yaklaşım biçimleri senin iki şifre alanlarını ve sonrası doğrulayıcı tanımlayan uzanabilecek bir sfPasswordEditForm sınıfı yaratmaktır. Daha sonra size özel bir biçimde onları istediğiniz sırayla alanları yerleştirmek için widgetSchema kapalı moveField yöntemini kullanabilirsiniz:

$this->widgetSchema->moveField('password', 'after', 'username');
$this->widgetSchema->moveField('password_again', 'after', 'password');