मैं उपयोगकर्ता पंजीकरण फॉर्म बनाने की कोशिश कर रहा हूं जो पासवर्ड फ़ील्ड की जटिलता की जांच करता है। मैंने documentation के अनुसार ऐसा करने के लिए एक कस्टम सत्यापनकर्ता लिखा है। यह फ़ाइल उपयोगकर्ता \ src \ उपयोगकर्ता \ Validator पर मेरे 'उपयोगकर्ता' मॉड्यूल में रहती है।फॉर्म के लिए ज़ेंड फ्रेमवर्क 2 कस्टम वैलिडेटर्स
<?php
namespace User\Validator;
use Zend\Validator\AbstractValidator;
class PasswordStrength extends AbstractValidator {
const LENGTH = 'length';
const UPPER = 'upper';
const LOWER = 'lower';
const DIGIT = 'digit';
protected $messageTemplates = array(
self::LENGTH => "'%value%' must be at least 6 characters long",
self::UPPER => "'%value% must contain at least one uppercase letter",
self::LOWER => "'%value% must contain at least one lowercase letter",
self::DIGIT => "'%value% must contain at least one digit letter"
);
public function isValid($value) {
... validation code ...
}
}
मेरी समस्या मेरे उपयोगकर्ता पंजीकरण फॉर्म में इस सत्यापनकर्ता का उपयोग करने की कोशिश में उत्पन्न होती है। मैंने ServiceManager को Module.php में कॉन्फ़िगर करके सत्यापनकर्ता को जोड़ने का प्रयास किया।
public function getServiceConfig() {
return array(
'invokables' => array(
'PasswordStrengthValidator' => 'User\Validator\PasswordStrength'
),
);
}
फिर मैंने इसे User.php में इनपुट फ़िल्टर में जोड़ा।
public function getInputFilter() {
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add($factory->createInput(array(
'name' => 'username',
'required' => true,
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 100,
),
),
),
)));
$inputFilter->add($factory->createInput(array(
'name' => 'password',
'required' => true,
'validators' => array(
array(
'name' => 'PasswordStrengthValidator',
),
),
)));
$this->inputFilter = $inputFilter;
}
return $this->inputFilter;
}
हालांकि, जब मैं फॉर्म तक पहुंचता हूं और सबमिट बटन दबाता हूं, तो मुझे सर्विस नॉटफाउंड अपवाद मिलता है।
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for PasswordStrengthValidator
क्या मेरी सेवा प्रबंधक कॉन्फ़िगरेशन में कोई समस्या है? मुझे यह भी यकीन नहीं है कि कस्टम वैधानिक का उपयोग करने के लिए यह सही तरीका है या नहीं। मुझे ZF1 का उपयोग करके बहुत सारे उदाहरण मिल गए हैं, लेकिन जेडएफ 2 के लिए प्रलेखन और उदाहरण जो मैंने पाया है, कभी भी फॉर्मेट के साथ अपने एकीकरण को संबोधित करने के लिए सत्यापनकर्ता के लेखन से परे नहीं बढ़ता है। किसी भी सलाह की सराहना की जाएगी।
हुह, मुझे नहीं पता था यह नाम मैं के रूप में यह दर्ज की गई थी के साथ क्या करना पड़ सकता है ... मैं वास्तव में अपने पिछले सुझाव बाहर की कोशिश की और में इसे कॉन्फिगर पूरी तरह से योग्य वर्ग के नाम के साथ ServiceManager, और यह चाल है! आपकी सहायताके लिए धन्यवाद! –