2012-04-17 35 views
10

Trong dự án Symfony2 của tôi, tôi đã cố gắng để tự động tạo ra các đối tượng sử dụng trong loại hình thức của tôi, bằng cách đi qua việc sử dụng các truy vấn xây dựng, vvloại bù đắp bất hợp pháp trong isset hoặc trống trong dòng EntityChoiceList.php 273

Để ông lựa chọn thực thể tài sản Tôi đang cung cấp một mảng các thực thể được sử dụng. Khi tải trang, mọi thứ có vẻ tốt và nội dung chính xác được hiển thị. Tuy nhiên trên hình thức trình tôi nhận được

bất hợp pháp bù đắp gõ isset hoặc trống trong dòng EntityChoiceList.php 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; 
      ..... 

gì đã cho tôi bối rối là nếu tôi thêm var_dump (isset ($ this-> các thực thể [$ key])); ở trên dòng này tôi được trả về 'bool (true)' mà với tôi có nghĩa là chìa khóa không tồn tại.

Là nền tôi đã cố gắng để mở rộng EntityType, để dễ trong dự án của tôi và nói thêm:

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; 
}  

Có bất kỳ một ý tưởng nào tại sao tôi nhận được lỗi này, hoặc tôi sẽ về vấn đề của tôi tất cả sai anyway , với việc cố gắng truyền một mảng các thực thể tới các lựa chọn?

Trả lời

-2

Tôi đoán bạn đã giải quyết vấn đề này theo một cách khác và đây cũng không phải là câu trả lời thực.

Nhưng tôi đoán rằng một trong hai thực thể $ không phải là một mảng vào thời điểm đó hoặc khóa $ không phải là giá trị vô hướng. Đối gỡ lỗi bạn nên sử dụng:

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

Làm thế nào bây giờ bạn thử nghiệm điều này, nó sẽ dừng lại trên đèo đầu tiên trong chức năng đó. Các biểu mẫu của Symfony sử dụng việc thoát khỏi quá trình đệ quy, vì vậy một lối thoát trong bất kỳ chức năng nào thường không giúp bạn.

43

Nếu bạn nhận được này trong khi cố gắng để loại bỏ một phần tử từ một ArrayCollection nó có thể là bởi vì bạn đã gõ:

$list->remove($item) thay vì $list->removeElement($item)

+7

tôi cảm thấy thực sự câm cho lãng phí 2 giờ về vấn đề này. Chắc chắn nên ngừng làm việc 'đến tận khuya! : D – tftd

+0

Tại sao câu trả lời này không được chấp nhận? Điều đó hoạt động chính xác! – Sithu

Các vấn đề liên quan