2016-12-15 55 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

然後,所有你需要的是:

初始化方法表類:

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 - 和往常一樣,閱讀自述文件! :-)

祝你好運搜索和過濾!

相關問題