2016-12-22 2 views
0

Ich erstelle eine Website von Krankenhaus-Management-System. Ich habe einen Patienten-Controller und einen Medical Report-Controller. Jeder Patient hat eine Aktion von "View Report". Wenn der Benutzer auf den Ansichtsbericht klickt, sollte er zum medizinischen Bericht weitergeleitet werden und nur das Feld angezeigt werden, das sich auf die Patienten-ID im Patienten-Controller bezieht. Wie gehe ich vor?Anzeigen einer bestimmten Zeile in einem anderen Controller bei Umleitung von einem Controller

Patienten Tabelle:

<?php 
namespace App\Model\Table; 

use Search\Manager; 
use Cake\ORM\Query; 
use Cake\ORM\RulesChecker; 
use Cake\ORM\Table; 
use Cake\Validation\Validator; 

class PatientsTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     parent::initialize($config); 

     $this->table('patients'); 
     $this->displayField('Patient_ID'); 
     $this->primaryKey('Patient_ID'); 
     $this->addBehavior('Search.Search'); 
     $this->searchManager() 
      ->value('Patient_ID'); 
    } 

    public function validationDefault(Validator $validator) 
    { 
     $validator 
      ->allowEmpty('Patient_ID', 'create'); 

     $validator 
      ->requirePresence('Name', 'create') 
      ->notEmpty('Name'); 

     $validator 
      ->requirePresence('Address', 'create') 
      ->notEmpty('Address'); 

     $validator 
      ->date('DOB') 
      ->requirePresence('DOB', 'create') 
      ->notEmpty('DOB'); 

     $validator 
      ->allowEmpty('Contact'); 

     $validator 
      ->requirePresence('Gender', 'create') 
      ->notEmpty('Gender'); 

     $validator 
      ->allowEmpty('Blood_Group'); 

     return $validator; 
    } 
} 

MedicalReport Tabelle:

<?php 
namespace App\Model\Table; 

use Cake\ORM\Query; 
use Cake\ORM\RulesChecker; 
use Cake\ORM\Table; 
use Cake\Validation\Validator; 

class MedicalReportTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     parent::initialize($config); 

     $this->table('medical_report'); 
     $this->displayField('Report_No'); 
     $this->primaryKey('Report_No'); 
    } 

    public function validationDefault(Validator $validator) 
    { 
     $validator 
      ->requirePresence('Patient_ID', 'create') 
      ->notEmpty('Patient_ID'); 

     $validator 
      ->requirePresence('Report_No', 'create'); 

     $validator 
      ->date('R_date') 
      ->requirePresence('R_date', 'create') 
      ->notEmpty('R_date'); 

     $validator 
      ->date('C_date') 
      ->requirePresence('C_date'); 

     $validator 
      ->requirePresence('Room_No'); 

     $validator 
      ->allowEmpty('Diet'); 

     $validator 
      ->numeric('Payment') 
      ->requirePresence('Payment'); 

     return $validator; 
    } 
} 
+0

Sie postete nur die Modelle, keine Controller oder Ansichten ... sieht aus, als ob Sie neu in CakePHP sind. Bitte beginnen Sie mit dem Lesen und Machen des Anfänger-Tutorials: http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/blog.html Dort wird auch erklärt, wie Sie eine Ansicht für einen einzelnen Gegenstand erstellen können. Diese Frage sollte geschlossen werden. –

Antwort

0

Sie CakePHP verwenden können HtmlHelper eine URL zu erstellen, wie so den medizinischen Bericht zu lesen:

<?php 
echo $this->Html->link(
    'View Report', 
    ['controller' => 'MedicalReports', 'action' => 'view', $MedicalReport->id], 
    ['class' => 'button', 'target' => '_blank']); 

Dies würde Erstellen Sie etwas wie: <a href="/medical-reports/view/123" class="button" target="_blank">View Report</a>

Allgemeine Methode zum Erstellen von HTML-Links. Verwenden Sie $ options to , um Attribute für das Element anzugeben und ob der $ title mit Escapezeichen versehen werden soll.

mehr über die Sie HtmlHelper::link();

MedicalReportsController.php

In Ihrem Controller Lesen Sie die view()-Funktion, die den Code für die action definiert erstellen können.

<?php // src/Controller/MedicalReportsController.php 

class MedicalReportsController extends AppController { 
    public function view($id) 
    { 
     // Fetch the medical report from the database based on ID 
     $medicalReport = $this->MedicalReports->get($id); 

     // Pass it along to the view 
     $this->set('medical_report',$medicalReport);   
    } } 

Die Funktion set() sendet Daten an die Ansicht vom Controller.

Die Controller::set() Methode ist die wichtigste Methode, Daten von Ihrem Controller zu Ihrer Ansicht zu senden.

Verwandte Themen