2012-05-07 15 views
8

के साथ कस्टम इनपुट एचटीएमएल कुछ इनपुट तत्व उत्पन्न करने के लिए मैं केकपीएचपी के फॉर्म सहायक का उपयोग करने की कोशिश कर रहा हूं।केकपीएचपी के फॉर्म हेल्पर

एचटीएमएल मैं उत्पन्न करने के लिए कोशिश कर रहा हूँ है:

<div class="formRow"> 
    <label>LabelText:</label> 
    <div class="formRight"> 
     <input name="data[User][email_address]" type="text" value=""> 
    </div> 
    <div class="clear"></div> 
</div> 

Ive केक प्रलेखन के माध्यम से एक नज़र (2.1 का उपयोग करना) थी और मैं ऐसा करने के तरीके पर पर्याप्त जानकारी नहीं मिल रहा।

ऐसा लगता है कि मुझे इनपुट विधि पर प्रारूप विकल्प का उपयोग करने की आवश्यकता है, लेकिन यह पता नहीं लगा सकता कि इसे कैसे प्राप्त किया जाए। विशेष रूप से इनपुट क्षेत्र के चारों ओर एक वर्ग के नाम के साथ div के बारे में चिंतित ..

E.g. Ive कुछ इस तरह की कोशिश की:

echo $this->Form->input('email_address', array(
               "input" => array('attributes' => array('wrap' => 'div','class' => 'formRight')))); 

लेकिन इस मार्कअप में कोई भी परिवर्तन नहीं करता है और सिर्फ इस त्रुटि फेंकता है: सूचना (8): स्ट्रिंग रूपांतरण के लिए सरणी [कोर \ केक \ देखें \ Helper.php, लाइन 459 ]

तो मेरा सवाल यह है कि मैं मार्कअप बनाने के लिए इस फॉर्म को कैसे सहायक बना सकता हूं?

किसी भी मदद की बहुत सराहना की

उत्तर

15

आप इसे अधिक सोच रहे हैं। (कोई चिंता नहीं, हम सभी करते हैं)। बस याद रखें, केकपीएचपी आपके लिए चीजों को आसान बनाने के बारे में है (अन्य चीजों के साथ) - यदि आप केक को मजबूर करने के लिए मजबूर करने के लिए संघर्ष कर रहे हैं, तो बस याद रखें, आप मूल बातें वापस आ सकते हैं - यह सिर्फ PHP/HTML है आख़िरकार।

<div class="formRow"> 
    <label>LabelText:</label> 
    <div class="formRight"> 
     <?php echo $this->Form->input('email_address', array(
      'div'=>false, 'label'=>false)); ?> 
    </div> 
    <div class="clear"></div> 
</div> 

आप अपने रूपों जब संभव हो के लिए फार्म सहायक का उपयोग करना चाहिए, लेकिन आप इसे के सभी प्रीसेट है उपयोग करने के लिए divs & लेबल आसपास की तरह नहीं है। उपर्युक्त मामले में, बस इसे बताएं कि आप div नहीं चाहते हैं, और इसे स्वयं को एक div के साथ लपेटें।

आप किसी भी जानकारी के चारों ओर <div> या <label> रों नहीं करना चाहते हैं, तो आप भी रूप के inputDefaults सेट कर सकते हैं:

$this->Form->create('Whatever', array(
    'inputDefaults' => array('label'=>false, 'div'=>false) 
)); 
+0

धन्यवाद, कि चाल करता है और मुझे और अधिक लचीलापन आगे जाने :) – cowls

+1

@Dave आरामदायक शब्द देता है। धन्यवाद। –

0

आप क्षेत्रों का एक बहुत है, तो आप jQuery का उपयोग कर सकते हैं।

php:

echo $this->Form->input('email_address', array('class' => 'formRow')); 

Jquery:

$(".formRow").each(function() { 
    $(this).wrapInner("<div class='formRight'></div>"); 
    $(this).find("label").prependTo(this); 
    $(this).append('<div class="clear"></div>'); 
}); 
संबंधित मुद्दे