__toString() harus mengembalikan nilai string saat mengirimkan formulir

Saya memiliki tampilan acara yang harus saya sesuaikan sedikit sehingga kita dapat mengedit hal-hal di dalamnya. Diantaranya terdapat multi select yang merupakan hasil query untuk memfilter sekolah yang saya lakukan di dalam controller, dikirim melalui metode render.

Sebelumnya, saya menggunakan formulir multi pilih banyak ke banyak untuk memilih setiap sekolah yang pernah disimpan dalam database. Sekarang saya ingin menggunakannya sehingga saya bisa menggunakan apa yang sudah berfungsi.

Karena dikirim melalui render dan bukan formulir, saya berhasil membuat formulir HTML, menampilkannya, dan melihat apa yang telah dipilih ketika saya mengirimkan formulir, namun saya mengalami beberapa masalah:

Pertama-tama, ia ingin menjadi sebuah instance dari sebuah objek, dan untuk dapat menyimpan sebuah objek, bukan sebuah array. Saya berhasil melakukannya dengan melakukan hal berikut:

        $object = new Ecole();
        foreach ($ecolesDispo as $key => $value)
        {
            $object->$key = $value;
        }
        $mission->addEcolesDispo($object);

(Ecole untuk sekolah)

Masalah yang sekarang saya hadapi muncul tepat setelahnya, karena sekarang ia ingin diubah menjadi string, namun saya tidak dapat melakukannya.

Beginilah tampilan bagian entitas saya yang bersangkutan.

/**
 * Constructor
 */
public function __construct()
{
    $this->ecolesDispo = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * @return string
 */
public function __toString()
{
    return (string) $this->addEcolesDispo($object);
//Not sure about that part though
}

/**
 * Add ecolesDispo
 *
 * @param \EcoleBundle\Entity\Ecole $ecolesDispo
 *
 * @return Mission
 */
public function addEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo)
{
    $this->ecolesDispo[] = $ecolesDispo;

    return $this;
}

/**
 * Remove ecolesDispo
 *
 * @param \EcoleBundle\Entity\Ecole $ecolesDispo
 */
public function removeEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo)
{
    $this->ecolesDispo->removeElement($ecolesDispo);
}

/**
 * Get ecolesDispo
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getEcolesDispo()
{
    return $this->ecolesDispo;
}

Bagaimana saya bisa mengubahnya menjadi string?

Terima kasih sebelumnya


person Jaeger    schedule 27.07.2016    source sumber
comment
Entitas apa itu, apakah Entitas Misi? Selain itu, dapatkah Anda menunjukkan kode Entitas Ecole? Apa sebenarnya yang ingin Anda tampilkan dengan fungsi __toString()?   -  person Alvin Bunk    schedule 27.07.2016


Jawaban (2)


Fungsi __toString Anda akan terlihat seperti:

public function __toString()
{
    return $this->id; // Because __toString seems to be called to set your $key variable...
}

-> mengandalkan properti string.

Dalam fungsi __toString() Anda, Anda menggunakan (string) yang secara implisit akan memanggil ... __toString() untuk mengonversi $this menjadi string. Itu akan menjadi panggilan melingkar.

person Alsatian    schedule 27.07.2016

Coba ini jika ada variabel string nama di entitas tempat Anda menggunakan __toString atau gunakan properti jenis string apa pun dari entitas tersebut yang menentukan entitas itu sendiri.

public function __toString()
{
    // Or change the property that you want to show 
    return $this->name; 
}
person Yash Sharma    schedule 09.11.2016