2010-10-28 16 views
5

मैंने पेज टेबल बढ़ाया है और अब मैं "टैग" नामक डोमेन ऑब्जेक्ट में कुछ डेटा का उपयोग करना चाहता हूं।मौजूदा तालिका में एक्स्टबेस मैपिंग काम नहीं करता

plugin.myextension.persistence.classes.Tx_myextension_Domain_Model_Tag { 
    mapping { 
     tableName = pages 
     recordType = Tx_myextension_Domain_Model_Tag 
     columns { 
      tx_myextension_tag_name.mapOnProperty = name 
      uid.mapOnProperty = id 
     } 
    } 
} 

लेकिन ऐसा लगता है कि विस्तार तालिका Tx_myextension_Domain_Model_Tag (जो मौजूद नहीं है)

यह त्रुटि मैं प्राप्त है का उपयोग करने की कोशिश करता है::


तो मैं /Configuration/TypoScript/setup.txt में निम्नलिखित की कोशिश की

Tx_Extbase_Persistence_Storage_Exception_SqlError`

टेबल 'tx_myextension_domain_model_tag' मौजूद नहीं है: का चयन करें tx_myextension_domain_model_tag * एफ। ROM tx_myextension_domain_model_tag जहां tx_myextension_domain_model_tag.id = '24' LIMIT 1

मैंने क्या गलत किया है?

+0

आप लाइन 'को हटाने की कोशिश की है RECORDTYPE = Tx_myextension_Domain_Model_Tag'? – Mateng

उत्तर

0

Tx_myextension_Domain_Model_Tag आपकी ऑब्जेक्ट का नाम सही है? लेकिन मुझे लगता है कि यह उस तालिका का नाम नहीं है जिसे आप एक्सेस करने का प्रयास कर रहे हैं। तो मेरा अनुमान है कि जिस नाम को आप "tableName" मान में प्रदान कर रहे हैं वह गलत है। "पेज" में क्या होता है?

+0

यह कक्षा का नाम है, आप सही हैं। तालिका "पृष्ठ" टाइपो 3-पेज तालिका है, इसलिए इसमें टाइप 3 के सभी पृष्ठ शामिल हैं (साथ ही कॉलम जिन्हें मैंने विस्तार के लिए जोड़ा है [..] टैग_नाम) – hering

+0

मुझे नहीं लगता कि आप मैपिंग को कैसे निर्दिष्ट करते हैं नमूना आप प्रदान कर रहे हैं। यह सिर्फ इतना कहता है कि आपके दृढ़ता मॉडल को पता है कि कक्षा Tx_myextension_Domain_Model_Tag मैप किया गया है, लेकिन क्या आप स्पष्ट रूप से निर्दिष्ट करते हैं कि यह वर्ग उस तालिका में मैप किया गया है जिसे आप चाहते हैं? यदि नहीं, तो आपकी त्रुटि सामान्य है क्योंकि यह कक्षा का नाम तालिका के नाम के रूप में ले जाएगा (जैसा कि आपने कहा है, मौजूद नहीं है)। – Hal

+0

लेकिन मानचित्रण में मैंने तालिका का नाम निर्दिष्ट किया ('tableName = pages')। हो सकता है कि मैं सिंटैक्स के साथ गलत हूं, लेकिन मैंने सोचा कि कोड का मेरा टुकड़ा जो मुझे उम्मीद है वह करना चाहिए: डोमेन क्लास को पेज-टेबल पर मैप करें और डोमेन क्लास नाम की एक टेबल तक पहुंचने का प्रयास करने से एक्सबेबेस को रोकें। – hering

2

क्या आपने "plugin.myextension" के बजाय "config.tx_extbase" को आजमाया है?

मेरे लिए

config.tx_extbase.persistence.classes.Tx_MyExtension_Domain_Model_Tag.mapping.tableName = pages 

काम करता है की तरह।

+0

मेरे लिए काम करता है (टीएम) – pduersteler

+0

मेरे लिए काम नहीं करता है। मेरे एक्सटेंशन में मेरे पास एक डोमेन मॉडल 'Tx_Extname_Domain_Model_Member' है जो 'Tx_Extbase_Domain_Model_FrontendUser' को बढ़ाता है। मैं द्वारा fe_users करने के लिए अपने मॉडल के नक्शे 'config.tx_extbase.persistence.classesTx_Extname_Domain_Model_Member.mapping.tableName = fe_users' लेकिन जब मैं बीई में एक रिकॉर्ड को बचाने की कोशिश, मैं त्रुटि' एसक्यूएल त्रुटि मिलती है: 'टेबल' usrdb_typo3.tx_extname_domain_model_member 'नहीं करता है' टी अस्तित्व में नहीं है '। इस प्रकार मुझे लगता है कि मानचित्रण ठीक से काम नहीं करता है। हालांकि यह दिखाया गया है कि मेरा टीएस ऑब्जेक्ट ब्राउज़र है। – Martin

3

अपने एक्सटेंशन टाइपोस्क्रिप्ट टेम्पलेट को अपने टेम्पलेट में शामिल करना न भूलें (टेम्पलेट> संपूर्ण टेम्पलेट संपादित करें> स्थिर टेम्पलेट्स शामिल करें), अन्यथा आपके setup.txt का मूल्यांकन नहीं किया जाता है।

0

क्या आपने अलग-अलग पृष्ठों को रिकॉर्डटाइप Tx_myextension_Domain_Model_Tag के रूप में निर्दिष्ट किया है? यह पृष्ठों तालिका के doctype क्षेत्र में जाने के लिए चाहिए था (इसलिए आप उस क्षेत्र का mysql डेटाप्रकार को बदलना होगा। अन्यथा Extbase नहीं जानता है कि इस विशेष पृष्ठ एक extbase रिकॉर्ड और नहीं एक नियमित रूप से पेज है। एक्स्टबेस में सिंगल टेबल विरासत (एसटीआई) के बारे में अधिक देखें: http://pascal-jungblut.com/blog/blog-post/2010/11/06/single-table-inheritance-in-extbase.html

+0

404 के पास्कल के लिए लिंक – Mateng

2

यह जांचने के लिए कि कौन सा रिकॉर्ड टाइप (स्वीकार्य) स्वीकार्य है, बीई में कॉन्फ़िगरेशन मॉड्यूल, टीसीए अनुभाग में अपनी तालिका ([पेज] इस मामले में) ढूंढें और चेक प्रकार स्तंभ (... [ctrl] [प्रकार] - पृष्ठों के लिए यह doktype 'है, जो अगर पेज रिकॉर्ड मानक पेज या sysfolder आदि है फैसला करता है)।

यह कॉलम tinyint है (3) डेटाबेस में है, तो आप कर सकते हैं लिखो वी इसके लिए 'tx_myextension_Domain_Model_Tag' alue। संख्या के आधार पर पहचाने गए अपने नए नए डॉकटाइप में बनाएं और रिकॉर्ड टाइप करें।

वैकल्पिक आप पृष्ठ के प्रकार से कोई फर्क नहीं पड़ता है तो आप मैपिंग कॉन्फ़िगरेशन से केवल रिकॉर्ड टाइप को हटा सकते हैं।

0

क्या आप इसे ईआईडी के साथ टाइपो 3 कॉल में करते हैं? यहां कुछ कॉन्फ़िगरेशन लोड नहीं किया गया है ..

... 
    $GLOBALS['TSFE'] = \t3lib_div::makeInstance('tslib_fe', $TYPO3_CONF_VARS, $_GET["id"], 0, true); 
    //$GLOBALS['TSFE'] = new $temp_TSFEclassName(); 
    $GLOBALS['TSFE']->connectToDB(); 
    $GLOBALS['TSFE']->initFEuser(); 
    $GLOBALS['TSFE']->determineId(); 
    $GLOBALS['TSFE']->getCompressedTCarray(); 
    $GLOBALS['TSFE']->initTemplate(); 
    $GLOBALS['TSFE']->getConfigArray(); 
    ... 
0

FE-प्लगइन्स के बारे में उचित नामकरण परंपरा का ध्यान रखें:

अगर हां, अगर सभी विन्यास लोड हो रहा है समस्या का हल करने की कोशिश

plugin.tx_myextension 
संबंधित मुद्दे