Repository eines andern Controllers abfragen [Gelöst]

  • Gloey Gloey
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    05. 08. 2011, 12:48

    Hi,

    in meiner Extension brauche ich Daten aus einem anderen Controller und frage mich, wie ich das implementieren kann.

    Das Problem ist folgendes:
    Es extistieren Firmen und Studenten, die Gesprächstermine miteinander vereinbaren können. Ich habe hierfür die Klassen Company, Date und Student.
    Student und Company haben jeweils eine Referenz auf Date. Nun will ich für eine Firma die Termine mit den Namen der jeweiligen Studenten ausgeben und für die Studenten die Termine mit den jeweiligen Namen der Firmen ausgeben. In Date sind lediglich die Startzeit, Endzeit und die IDs für den Student und die Firma gespeichert.

    1. <?php
    2. /**
    3.  * @var string
    4.  */
    5. protected $startTime;
    6.  
    7. /**
    8.  * @var string
    9.  */
    10. protected $endTime;
    11.  
    12. /**
    13.  * @var string
    14.  */
    15. protected $studentID;
    16.  
    17. /**
    18.  * @var string
    19.  */
    20. protected $contactID;
    21. ?>

    Um das jetzt anzeigen zu können, muss ich vom Company-Controller das Repository der Studenten auslesen können und umgekehrt.
    Mein erster Versuch bestand darin, eine Action in der Klasse Student zu machen und per redirect darauf zuzugreifen.
    In der Funktion sollen das Repository ausgelesen und die Daten wieder per redirect an eine Action im Company-Controller gesendet und dann angezeigt werden.

    Zugriff aus dem Company-Controller:

    1. <?php
    2. public function showAction(Tx_FhwTimetableWhb_Domain_Model_Company $company) {
    3. $this->redirect('getStudentData', 'Student', NULL, array('company' => $company));
    4. }
    5. ?>

    Action im Student-Controller:

    1. <?php
    2. public function getStudentDataAction(Tx_FhwTimetableWhb_Domain_Model_Company $company) {
    3. $students = $this->studentRepository->findAll();
    4.  
    5. $this->redirect('dataToShowCompany', 'Company', NULL, array('company' => $company, 'students' => $students));
    6. }
    7. ?>

    Leider bekomme ich von den Studentendaten nur ein Array mit den UIDs übergeben, obwohl die Daten richtig ausgelesen werden.
    Mit forward habe ich es schon probiert, aber das klappt auch nicht.
    Ich habe auch so das Gefühl, dass das nicht unbedingt die beste Lösung ist...

    Gruß, Birte


  • 1
  • Eydamos Eydamos
    Padawan
    0 x
    54 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2011, 09:25

    Dein Denkweg ist etwas falsch, obwohl du es in deinem Beitrag richtig beschrieben hast. Was du brauchst ist nicht der Zugriff auf den anderen Controller, sondern auf das andere Repository.

    Im Company Controller

    1. /**
    2. * @var Tx_FhwTimetableWhb_Domain_Repository_StudentRepository
    3. */
    4. protected $studentRepository;
    5.  
    6.  
    7. /**
    8. * @param Tx_FhwTimetableWhb_Domain_Repository_CompanyRepository $companyRepository
    9.   * @return void
    10. - */
    11. public function injectCompanyRepository(Tx_FhwTimetableWhb_Domain_Repository_CompanyRepository $companyRepository) {
    12. $this->companyRepository = $companyRepository;
    13. $this->studentRepository = t3lib_div::makeInstance("Tx_FhwTimetableWhb_Domain_Repository_StudentRepository" );
    14. }
    15.  
    16. public function showAction(Tx_FhwTimetableWhb_Domain_Model_Company $company) {
    17. $students = $this->studentRepository->getStudentByCompany($company);
    18. $this->view->assign("students", $students);
    19. }

    Quasi das selbe umgekehrt im Student Controller.

  • Gloey Gloey
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2011, 11:16

    Ja, da habe ich mich völlig verrannt.
    Das klappt jetzt so alles, vielen Dank :-)

  • 1