Cakephp $ this-> Form-> postLink不工作

时间:2016-11-12 08:32:26

标签: cakephp-2.0

我使用cakephp框架2.开发一个Employee每日出席,在我的应用程序索引页面中我有3个选项编辑,应用假期和删除假期。两个链接,编辑和应用正常工作,但删除我使用的是帖子链接。当根据需要有一个删除按钮时它没有将参数传递给删除功能,但创建相同链接的副本意味着两个删除按钮然后是最后一个传递参数,我确实现在有任何错误我的代码。这是我的查看代码

<?php 

 $i=1; 
 foreach($holidays as $holiday):?>
  <tr >
     <td><?php echo $i++; ?></td>
     <td><?php echo $holiday['Holiday']['title'] ?></td>
     <td><?php echo $holiday['Group']['title'] ?></td>
     <td><?php echo $holiday['Shift']['title'] ?></td>
     <td><?php echo $holiday['Holiday']['from_date'] ?></td>
     <td><?php echo $holiday['Holiday']['to_date'] ?></td>
     <td><?php echo $this->Html->link('<span class="glyphicon glyphicon-  pencil"></span> Edit',array('action'=>'edit', $holiday['Holiday']['id']),array('class'=>'btn btn-warning','escape'=>false)); ?>
                    <?php echo $this->Html->link('<span class="glyphicon glyphicon-refresh"></span> Apply',array('action'=>'applyholiday', $holiday['Holiday']['id']),array('class'=>'btn btn-success','escape'=>false)); ?>
                     <?php
                        echo $this->Form->postLink(
                            '<span class="glyphicon glyphicon-trash"></span> Delete',
                            array('action' => 'delete', $holiday['Holiday']['id']),
                            array('confirm' => 'Are you sure?','escape'=>false,'class'=>'btn btn-danger')
                        );
                    ?>



    </td>
  </tr> 
  <?php endforeach; ?>    
  <?php unset($holiday); ?>  

这是我的LeaveController删除功能代码。

public function delete($id){
         if ($this->request->is('get')) {
            throw new MethodNotAllowedException();
        }
            debug($id);
            exit;
            if($this->Holiday->delete($id)){

                $this->Flash->success(__('Record Deleted Success.'));
                return $this->redirect($this->referer());
            }



}

2 个答案:

答案 0 :(得分:0)

首先: postLink创建HTML链接,但使用POST方法访问URL (see more information here) 表示您的请求方法是发布的。

第二:你在删除功能中的条件是:

if($this->request->is('get')){
  //
}

表示您的请求永远不会进入您的函数。 因此,请尝试使用:

if($this->request->is('post')){
  //
}

代替。

答案 1 :(得分:0)

你需要使用post而不是你的控制器。

 if(($this->request->is('post') || $this->request->is('put')){
  //Code goes here
 }