2016-12-22 8 views
0

Я создаю сайт системы управления больницей. У меня есть контроллер пациентов и контроллер медицинского отчета. У каждого пациента есть действие «Просмотр отчета». Когда пользователь нажимает на отчет о просмотре, он должен быть направлен в медицинский отчет, и должно отображаться только поле, относящееся к Patient_id в контроллере пациентов. Как мне это сделать?Отображение определенной строки в другом контроллере при перенаправлении с одного контроллера

Пациенты таблице:

<?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 стол:

<?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

Вы отправили только модели, контроллеры или представления ... похоже, что вы новичок в CakePHP. Пожалуйста, начните с чтения и ознакомления с учебником для начинающих: http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/blog.html Также объяснено, как вы можете создать представление для одного элемента. Этот вопрос должен быть закрыт. –

ответ

0

Вы можете использовать CakePHP-HtmlHelper создать URL для просмотра Медицинский отчет так:

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

Это будет создать что-то вроде: <a href="/medical-reports/view/123" class="button" target="_blank">View Report</a>

Метод общего назначения для создания ссылок HTML. Используйте $ options для , чтобы указать атрибуты для элемента и следует ли экранировать $ title .

Подробнее о HtmlHelper::link();

MedicalReportsController.php

В контроллере вы можете создать функцию view(), которая определяет код для action.

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

set() функция отправляет данные на вид из контроллера.

Controller::set() метод является основным способом передачи данных с вашего контроллера на ваш взгляд.

 Смежные вопросы

  • Нет связанных вопросов^_^