在Cakephp中返回同一页面上的查询结果

在Cakephp中返回同一页面上的查询结果,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我正在创建一个关于医院管理系统的网站。有一个员工控制器,其类型列指定该员工是医生、医务人员还是管理员。在这个页面上,我有一个“医生”操作,当点击该操作时,应该只在同一页面上返回“医生”类型的员工。我需要在控制器和模板中进行哪些更改 员工表: <?php namespace App\Model\Table; use Search\Manager; use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use C

我正在创建一个关于医院管理系统的网站。有一个员工控制器,其类型列指定该员工是医生、医务人员还是管理员。在这个页面上,我有一个“医生”操作,当点击该操作时,应该只在同一页面上返回“医生”类型的员工。我需要在控制器和模板中进行哪些更改

员工表:

<?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 EmployeeTable extends Table
{
    public function initialize(array $config)
    {
        parent::initialize($config);

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

    public function validationDefault(Validator $validator)
    {
        $validator
            ->allowEmpty('Employee_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
            ->numeric('Salary')
            ->allowEmpty('Salary');

        $validator
            ->allowEmpty('Category');

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

        return $validator;
    }
}


  • 在索引函数
    if($this->request->is('get'){//do something}

    <?php
    namespace App\Controller;
    
    use App\Controller\AppController;
    
    class EmployeeController extends AppController
    {
    
        public function initialize()
    {
        parent::initialize();
        $this->loadComponent('Search.Prg', [
            'actions' => ['index']
        ]);
    }
    
        public function index()
        {
            $employee = $this->paginate($this->Employee);
    
            $this->set(compact('employee'));
            $this->set('_serialize', ['employee']);
            $query = $this->Employee
            ->find('search', ['search' => $this->request->query]);
        $this->set('patients', $this->paginate($query));
        }
    
        public function view($id = null)
        {
            $employee = $this->Employee->get($id, [
                'contain' => []
            ]);
    
            $this->set('employee', $employee);
            $this->set('_serialize', ['employee']);
        }
    
        public function add()
        {
            $employee = $this->Employee->newEntity();
            if ($this->request->is('post')) {
                $employee = $this->Employee->patchEntity($employee, $this->request->data);
                if ($this->Employee->save($employee)) {
                    $this->Flash->success(__('The employee has been saved.'));
    
                    return $this->redirect(['action' => 'index']);
                } else {
                    $this->Flash->error(__('The employee could not be saved. Please, try again.'));
                }
            }
            $this->set(compact('employee'));
            $this->set('_serialize', ['employee']);
        }
    
        public function edit($id = null)
        {
            $employee = $this->Employee->get($id, [
                'contain' => []
            ]);
            if ($this->request->is(['patch', 'post', 'put'])) {
                $employee = $this->Employee->patchEntity($employee, $this->request->data);
                if ($this->Employee->save($employee)) {
                    $this->Flash->success(__('The employee has been saved.'));
    
                    return $this->redirect(['action' => 'index']);
                } else {
                    $this->Flash->error(__('The employee could not be saved. Please, try again.'));
                }
            }
            $this->set(compact('employee'));
            $this->set('_serialize', ['employee']);
        }
    
        public function delete($id = null)
        {
            $this->request->allowMethod(['post', 'delete']);
            $employee = $this->Employee->get($id);
            if ($this->Employee->delete($employee)) {
                $this->Flash->success(__('The employee has been deleted.'));
            } else {
                $this->Flash->error(__('The employee could not be deleted. Please, try again.'));
            }
    
            return $this->redirect(['action' => 'index']);
        }
    }
    
    <nav class="large-3 medium-4 columns" id="actions-sidebar">
        <ul class="side-nav">
            <li class="heading"><?= __('Actions') ?></li>
            <li><?= $this->Html->link(__('New Employee'), ['action' => 'add']) ?></li>
            <li><?= $this->Html->link(__('Doctors') ?></li>
            <li><?= $this->Html->link(__('Medical staff') ?></li>
            <li><?= $this->Html->link(__('Administration') ?></li>
    
    
        </ul>
    </nav>
    
    <div class="employee form large-9 medium-8 columns content">
        <?= $this->Form->create() ?>
        <fieldset>
            <legend><?= __('Search Employee') ?></legend>
            <?= $this->Form->input('Employee_ID',array('type' => 'text', 'label' => 'ID')); ?> 
        </fieldset>
        <?= $this->Form->button('Search', ['type' => 'submit']); ?>
        <?= $this->Form->end() ?>
    </div>
    
    
    <div class="employee index large-9 medium-8 columns content">
        <h3><?= __('Employee') ?></h3>
        <table cellpadding="0" cellspacing="0">
            <thead>
                <tr>
                    <th scope="col"><?= $this->Paginator->sort('Employee_ID') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Name') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Address') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('DOB') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Contact') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Gender') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Salary') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Category') ?></th>
                    <th scope="col"><?= $this->Paginator->sort('Dept_No') ?></th>
                    <th scope="col" class="actions"><?= __('Actions') ?></th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($employee as $employee): ?>
                <tr>
                    <td><?= h($employee->Employee_ID) ?></td>
                    <td><?= h($employee->Name) ?></td>
                    <td><?= h($employee->Address) ?></td>
                    <td><?= h($employee->DOB) ?></td>
                    <td><?= h($employee->Contact) ?></td>
                    <td><?= h($employee->Gender) ?></td>
                    <td><?= $this->Number->format($employee->Salary) ?></td>
                    <td><?= h($employee->Category) ?></td>
                    <td><?= h($employee->Dept_No) ?></td>
                    <td class="actions">
                        <?= $this->Html->link(__('View'), ['action' => 'view', $employee->Employee_ID]) ?>
                        <?= $this->Html->link(__('Edit'), ['action' => 'edit', $employee->Employee_ID]) ?>
                        <?= $this->Form->postLink(__('Delete'), ['action' => 'delete', $employee->Employee_ID], ['confirm' => __('Are you sure you want to delete # {0}?', $employee->Employee_ID)]) ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <div class="paginator">
            <ul class="pagination">
                <?= $this->Paginator->prev('< ' . __('previous')) ?>
                <?= $this->Paginator->numbers() ?>
                <?= $this->Paginator->next(__('next') . ' >') ?>
            </ul>
            <p><?= $this->Paginator->counter() ?></p>
        </div>
    </div>