2011-04-11 19 views
5

मेरे पास Building है जो User से जुड़ा हुआ है। एक User भी रजिस्टर, लॉगिन, आदि कर सकता है। मेरे पास मेरा सत्यापन सेट है ताकि कुंजी User फ़ील्ड (उदा। email, name इत्यादि) आवश्यक हैं।आवश्यक इनपुट की आवश्यकता नहीं है

जब मैं कोई भवन बनाता हूं, तो मैं किसी उपयोगकर्ता को स्पॉट पर जोड़ने की क्षमता भी प्रदान करता हूं। मेरे इमारत रूप है कि कुंजी उपयोगकर्ता की जानकारी के लिए आदानों है:

<?php echo $this->Form->input('User.first_name') ?> 
<?php echo $this->Form->input('User.last_name') ?> 
<?php echo $this->Form->input('User.email') ?> 

हालांकि, मैं नहीं चाहता कि के रूप में बी/सी मैं चाहता हूँ एक Building without necessarily creating a User` रिकॉर्ड बनाने के लिए सक्षम होने के लिए उपयोगकर्ता की आवश्यकता उन आदानों दर्शाया जाना चाहते हैं। मुझे क्या करने का कोई तरीका नहीं मिल रहा है को सत्यापन नियम द्वारा रखे गए div से आवश्यक कक्षा को हटा दें।

मैंने 'required' => false के विभिन्न संयोजनों की कोशिश की है और class मान सेट किया है, लेकिन अब तक कुछ भी काम नहीं किया है। क्या फॉर्म इनपुट की आवश्यकता नहीं है?

धन्यवाद। वैकल्पिक रूप से

echo $this->Form->input('User.first_name', 
         array('div' => array('class' => 'input text'))); 

, तो आप सिर्फ उस दृश्य के लिए नियंत्रक में required नियम unset सकता है, लेकिन परिणाम के साथ सावधान रहना:

+4

+1। किसी कारण से यह मुझे मुस्कुराता है ... – thkala

उत्तर

0

मैं हैरान हूँ उस धोखे का समाधान मेरे लिए काम नहीं करता था (शायद मैंने कुछ गलत किया), लेकिन मैंने जावास्क्रिप्ट का उपयोग प्रत्येक क्षेत्र के div से आवश्यक वर्ग को "मैन्युअल रूप से" हटाने के लिए किया।

0

यह करना चाहिए

unset($this->User->validate['first_name']['ruleName']['required']); 
+0

दिलचस्प बात यह है कि मैंने सोचा कि पहला भी काम करेगा, लेकिन यह निश्चित रूप से _not_ काम नहीं कर रहा है। मैंने सोचा कि शायद मैं कुछ याद करूँगा, लेकिन मुझे लगता है कि मैं केवल उस विधि का उपयोग आवश्यक वर्ग को _add_ करने के लिए करता था; कभी इसे हटाने के लिए नहीं। –

+0

यह पागल लगता है, लेकिन 'आवश्यक' कुंजी को भी परेशान करने से यह नहीं होता है। मैंने इसे स्पष्ट रूप से 'झूठी' पर भी सेट कर दिया है। एक 'डीबग() 'प्रिंट मुझे बताता है कि यह अनसेट/झूठा है और फिर भी कक्षा div पर दिखाई देती है। –

1

मैं एक ही समस्या थी और यह मेरे लिए काम किया (केक 1.2 में परीक्षण किया गया लेकिन मुझे यकीन है कि यह 1.3 से अनुवाद होगा)

  1. अपने लेबल के लिए एक "norequire" वर्ग जोड़ें:

    form .required label.norequire { font-weight:normal; } 
    form .required label.norequire:after { content:''; } 
    
:
echo $this->Form->input('User.first_name', array('label'=>array('class'=>'norequire','text'=>'First Name'))); 
  • अपने सीएसएस में, norequire वर्ग की स्थापना

    ("फॉर्म। अपेक्षित" भाग आवश्यक वर्ग के लिए केक के डिफ़ॉल्ट सीएसएस को ओवरराइड करने के लिए महत्वपूर्ण था।)

  • +0

    अच्छा समाधान। मुझे इस उद्देश्य के लिए प्रस्तुति और सामग्री दोनों को ओवरराइड करने के लिए सीएसएस के उपयोग को पसंद है। –

    0

    मैं मैन्युअल रूप से विभाजन जोड़कर समाप्त हुआ। बहुत सुंदर नहीं है, लेकिन यह काम करता है:

    <?php if ($this->Form->isFieldError('first_name')) { ?> 
        <div class="input text error"> 
    <?php } else { ?> 
        <div class="input text"> 
    <?php } 
        echo $this->Form->input('first_name', array('div' => false)); ?> 
    </div> 
    
    0
    $("#idOfYourTag").attr("required","false"); 
    

    यह मेरे लिए काम करता

    0

    मैं अभी भी इस के लिए एक 'उचित' जवाब नहीं मिला है, लेकिन एक त्वरित हैक के रूप में आप सिर्फ का उपयोग नहीं कर कोशिश कर सकते हैं प्रपत्र सहायक और में कोड फेंक खुद

    <?php 
    //echo $this->Form->input('User.first_name') 
    //echo $this->Form->input('User.last_name') 
    //echo $this->Form->input('User.email') 
    echo "<div class='input text'><label for='User_first_name'>First Name</label> 
         <input name='data[User][first_name]' maxlength='50' type='text' id='User_first_name'/></div>"; 
    echo "<div class='input text'><label for='User_last_name'>Last Name</label> 
         <input name='data[User][last_name]' maxlength='50' type='text' id='User_last_name'/></div>"; 
    echo "<div class='input text'><label for='User_email'>Username</label> 
         <input name='data[User][email]' maxlength='50' type='text' id='User_email'/></div>"; 
    ?> 
    
    4

    मुझे लगता है कि यह किया गया है एक-लंबे समय आ ', लेकिन यहाँ "सही" जिस तरह से आवश्यक (कम से कम केक में नहीं एक इनपुट तत्व बनाने के लिए है 2.4।1):

    echo $this->Form->input('studentid', array(
        'label' => __('Student ID'), 
        'required' => false 
    )); 
    

    बस 'required' => false पास करें।

    मैं वास्तव में चाहता हूं कि मैं कहूं कि मैं जानता हूं कि मैं इस व्यवहार को स्वचालित रूप से कैसे ट्रिगर करना चाहता हूं, लेकिन मेरे मॉडल को संशोधित करने से स्वचालित रूप से उत्पन्न <input> तत्वों को प्रभावित नहीं होता है। अगर मैं इसे समझता हूं तो मैं इस पोस्ट को अपडेट करूंगा। शीर्षक के लिए

    संबंधित मुद्दे