在cakephp中创建动态用户过滤器视图

时间:2014-02-05 06:05:20

标签: php cakephp filter

我有一个包含数据的潜在客户表,其中还包含用户输入此数据的信息。现在我想创建一个过滤器,在选择特定用户时,仅显示他的数据。如何在 cakephp 中执行此操作。请帮忙。

提前致谢

用户数据库

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `fname` varchar(100) DEFAULT NULL,
  `lname` varchar(100) DEFAULT NULL,
  `username` varchar(100) NOT NULL,
  `password` varchar(50) NOT NULL,
  `email` varchar(100) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `role` varchar(100) NOT NULL,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

主席表

CREATE TABLE IF NOT EXISTS `leads` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `account_id` int(11) NOT NULL,
  `name` varchar(200) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `board_number` varchar(11) DEFAULT NULL COMMENT 'board number',
  `mobile_number` varchar(11) DEFAULT NULL COMMENT 'mobile number',
  `requirements` varchar(1000) DEFAULT NULL,
  `total_price_quoted` int(11) DEFAULT NULL COMMENT 'total price quoted',
  `our_price` int(11) DEFAULT NULL COMMENT 'our price',
  `margin` int(11) DEFAULT NULL,
  `closing_month` varchar(100) DEFAULT NULL COMMENT 'closing month',
  `probablity` varchar(100) DEFAULT NULL,
  `status_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `date_added` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ;

控制器代码LeadController.php

public function user_filter() {      
    //$this->render('filter');        
    $this->loadModel('User');        
    $this->User->recursive = 0;

    $userFilter = $this->User->find('all',array(
        'fields' => array('User.username')
    ));

    $this->set('userFilter', $userFilter);

    return $userFilter;  
}

//查看/ filterMenu.ctp //此处列出的用户的下拉菜单

<?php
    $userFilters  = $this->requestAction(
        array(
            'controller' => 'leads',
            'action' => 'user_filter'
        )
    ); 
?>

<ul class="dropdown-menu">
    <?php foreach ($userFilters as $userFilter): ?>
        <li>
            <?php  
                echo $this->Html->link($userFilter['User']['username'],array(
                    'controller'=>'leads',
                    'action'=>'user_filter'
                )); 
                echo "<\n>";
           ?>
        </li>
    <?php endforeach;  ?>
</ul

我想创建该特定用户的视图。

1 个答案:

答案 0 :(得分:0)

您无法通过下拉菜单提供链接,您必须使用javascript指向页面。

显示来自特定用户的所有潜在客户,将用户ID传递给该函数并使用用户ID获取数据。

public function user_filter($id = null) { 
    if ($id){
       $leads = $this->Lead->find('all', array('conditions' => array('Lead.user_id' => $id)));
    }else{
      $leads = $this->Lead->find('all');
    }

    $this->loadModel('User');        
    $this->User->recursive = 0;

    $userFilter = $this->User->find('all',array(
        'fields' => array('User.username')
    ));
    $this->set('leads', $leads);
    $this->set('userFilter', $userFilter);

    return $userFilter;  
}

希望这会对你有所帮助。

相关问题