2016-12-15 5 views
0

Я хочу создать простой веб-сайт для системы управления больницами с использованием CakePHP. Я хочу, чтобы в моем контроллере пациентов был выбран метод поиска, который будет генерировать форму и принимать PatientID в качестве ввода от пользователя. Затем он будет генерировать результат всех значений для этой конкретной строки. Как мне это сделать и какие изменения мне необходимо внести в модель, контроллер и шаблон?Поиск определенной строки с использованием формы для получения данных и получения подробного результата в Cakephp

PatientsTable выглядит следующим образом:

<?php 
namespace App\Model\Table; 

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

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('patients'); 
    $this->displayField('Patient_ID'); 
    $this->primaryKey('Patient_ID'); 
} 

/** 
* Default validation rules. 
* 
* @param \Cake\Validation\Validator $validator Validator instance. 
* @return \Cake\Validation\Validator 
*/ 
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; 
} 
} 

Спасибо заранее.

ответ

0

Вы должны изучить один из удивительных плагинов для поиска в CakePHP, уже выполненном, например. https://github.com/friendsofcake/search.

Тогда все, что вам нужно будет это:

метод Initialize в классе таблицы:

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('patients'); 
    $this->displayField('Patient_ID'); 
    $this->primaryKey('Patient_ID'); 

    // Add the behaviour to your table 
    $this->addBehavior('Search.Search'); 

    // Setup search filter using search manager 
    $this->searchManager() 
     ->value('Patient_ID'); 
} 

Пример контроллера:

public function initialize() 
{ 
    parent::initialize(); 
    $this->loadComponent('Search.Prg', [ 
     'actions' => ['index'] 
    ]); 
} 

public function index() 
{ 
    $query = $this-> Patients 
     ->find('search', ['search' => $this->request->query]); 
    $this->set('patients', $this->paginate($query)); 
} 

Тогда вы можете просто использовать параметр URL запроса, как/пациентов/индекс? Patient_ID = 14, чтобы показать только пациентов с этим значением в Patient_ID.

Это можно сделать с помощью формы помощника CakePHP:

echo $this->Form->create(); 
echo $this->Form->input('Patient_ID'); 
echo $this->Form->button('Search', ['type' => 'submit']); 
echo $this->Form->end(); 

Discalimer: Я украл все примеры кода из: https://github.com/friendsofcake/search

Вы должны проверить различные типы фильтров для использования в таблице, это замечательно знать: https://github.com/friendsofcake/search#filters - и, как всегда, прочитайте файл readme! :-)

Удачи в поиске и фильтрации!