2012-04-17 8 views
10

मेरी Symfony2 परियोजना के भीतर मैं गतिशील उत्पन्न करने के लिए संस्थाओं, मेरी प्रपत्र प्रकार के भीतर इस्तेमाल करके गुजर क्वेरी बिल्डर आदिअवैध ऑफसेट प्रकार isset या EntityChoiceList.php लाइन 273

करने के उपयोग का प्रयास किया है में खाली वह इकाई विकल्प संपत्ति मैं उपयोग करने के लिए इकाइयों की एक सरणी की आपूर्ति कर रहा हूँ। पेज लोड पर सबकुछ ठीक लगता है और सही सामग्री प्रदर्शित होती है। 273

at ErrorHandler ->handle ('2', 'Illegal offset type in isset or empty', 
'..../Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php', '273', array('key'  => object(myEntity))) in ..../Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 273 
      ..... 
      return isset($entities[$key]) ? $entities[$key] : null; 
      ..... 

क्या मुझे स्टम्प्ड है हालांकि प्रपत्र प्रस्तुत करने पर मैं

अवैध isset या खाली में टाइप ऑफसेट EntityChoiceList.php लाइन में अगर मैं var_dump जोड़ने है (isset ($ this-> संस्थाओं [$ कुंजी])); बाहर निकलें; इस लाइन के ऊपर मैं 'बूल (सच)' वापस आ गया हूं, जिसका मतलब है कि कुंजी मौजूद है।

पृष्ठभूमि के रूप में मैं अपने प्रोजेक्ट के भीतर आसानी के लिए, EntityType का विस्तार करने का प्रयास किया है और कहा:

public function getDefaultOptions(array $options) 
{ 
    $defaultOptions = array(
     'em'    => null, 
     'class'    => 'Acme\TestBundle\Entity\myEntity', 
     'property'   => null, 
     'query_builder'  => null, 
     'choices'   => $this->myEntityArray, 
    ); 

    $options = array_replace($defaultOptions, $options); 
    $defaults = parent::getDefaultOptions($options);   
    return $defaults; 
}  

किसी भी एक किसी भी विचार क्यों मैं इस त्रुटि हो रही है, या मैं अपने मुद्दे सब गलत के बारे में वैसे भी जा रहा हूँ है , विकल्पों के लिए इकाइयों की एक सरणी पारित करने की कोशिश कर रहा है?

उत्तर

-2

मुझे लगता है कि आप इसे पहले से ही हल कर चुके हैं, और यह वास्तविक जवाब भी नहीं है।

लेकिन मुझे लगता है कि या तो $ इकाइयां उस बिंदु पर एक सरणी नहीं है, या $ कुंजी स्केलर मान नहीं है। डिबगिंग आप का उपयोग करना चाहिए के लिए:

<?php 
if (!is_array($entities) || !is_scalar($key)) { 
    var_dump($key, $entities));exit; 
} 

आप अब इस परीक्षण किया कैसे, यह है कि समारोह में पहली बार गुजरने पर बंद कर देंगे। सिम्फनी फॉर्म का उपयोग बहुत सारे रिकर्सन से बाहर निकलता है, इसलिए किसी भी समारोह में बाहर निकलने से आमतौर पर आपकी मदद नहीं होती है।

43

आप इस मिल रहे हैं एक ArrayCollection ऐसा शायद इसलिए है से एक तत्व को दूर करने के क्योंकि आपके द्वारा लिखी गईं कोशिश करते हुए:

$list->remove($item) बजाय $list->removeElement($item)

+7

मैं इस पर 2 घंटे बर्बाद करने के लिए वास्तव में गूंगा लग रहा है। निश्चित रूप से देर तक काम करना बंद कर देना चाहिए! : डी – tftd

+0

यह उत्तर क्यों स्वीकार नहीं किया गया? यह बिल्कुल काम करता है! – Sithu

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