2016-11-12 13 views
0

私はcakephpフレームワーク2を使用しています。私のアプリケーションのインデックスページに私は従業員を毎日出席させるために私は3つのオプションを編集し、休日を適用し、休日を削除しました。 2つのリンク、編集と正しく動作するが、私はポストリンクを使用して削除するために適用されます。必要に応じて1つの削除ボタンがあると、それは関数を削除するパラメータを渡しませんでしたが、同じリンクのコピーを作成すると2つの削除ボタン、最後の1つのパスパラメータを意味します。ここに私の表示コードです

<?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); ?> 

私のHolidaysControllerコードは、削除機能です。

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()); 
      } 



} 

答えて

0

まず:ポストリンクHTMLリンクを作成しますが、メソッドのPOSTを使用してURLにアクセスし、(see more information here) は、要求のあなたの方法はポストであることを意味します。

と第二:削除機能であなたの条件は次のとおりです。

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

あなたの要求があなたの関数内に行くことはありませんであることを意味します。 それでは、次のように試してみてください:

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

0

コントローラでgetの代わりに投稿を使用する必要があります。

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