我正在使用cakephp2.2.7我已经做了很多表单提交维护cakephp标准。这里我有基于循环迭代的多种形式。这是我的代码:
<style type="text/css">
.alert {
padding: 6px;
margin-bottom: 5px;
border: 1px solid transparent;
border-radius: 4px;
text-align: center;
}
input#OrderProductPieces {
display: inline;
float: l;
width: 50px;
}
th,td{
text-align: center;
}
</style>
<div class="page-content-wrapper">
<div class="page-content">
<!-- BEGIN PAGE HEADER-->
<h3 class="page-title">
Edit this order <small>Edit can't be performed when it delivered</small>
</h3>
<!-- END PAGE HEADER-->
<!-- BEGIN PAGE CONTENT-->
<div class="row">
<div class="col-md-12">
<!-- BEGIN EXAMPLE TABLE PORTLET-->
<div class="portlet box blue">
<div class="portlet-title">
<div class="caption">
<i class="fa fa-phone"></i>Edit Order
</div>
<?php echo $this->Session->flash(); ?>
<div class="tools">
<a href="javascript:;" class="reload">
</a>
</div>
</div>
<div class="portlet-body">
<table class="table table-striped table-hover table-bordered" id="sample_editable_1">
<thead>
<tr>
<th>Product Info </th>
<th>Customer Info</th>
<th > Action</th>
</tr>
</thead>
<tbody>
<?php
$order = $datas['orders'];
$customer = $datas['customers'];
$order_products = $datas['order_products'];
$product = $datas['products'];
$psettings = $datas['psettings'];
// pr($datas);
// exit;
foreach ($datas['products'] as $index => $product):
echo $this->Form->create('OrderProduct', array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'class' => 'form-horizontal',
'novalidate' => 'novalidate',
)
);
?>
<tr >
<td>
<img src="<?php echo $this->webroot . 'productImages/small/' . $psettings[$index]['small_img'] ?>" width="37" height="34">
<span class="cart-content-count">x <?php
echo $this->Form->input(
'pieces', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $order_products[$index]['pieces']
)
);
?>
</span>
<span>
<?php echo $product['name'] . ' By ' . $product['writer']; ?>
</span>
</td>
<?php
if ($index == 0):
?>
<td>
<?php
echo $this->Form->input(
'Customer.name', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $customer['name']
)
);
?>
<?php
echo $this->Form->input(
'Customer.city', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $datas['city']['name']
)
);
?>
<?php
echo $this->Form->input(
'Customer.location', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $datas['location']['name']
)
);
?>
<?php
echo $this->Form->input(
'Customer.mobile', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $customer['mobile']
)
);
?>
<?php
echo $this->Form->input(
'Customer.alt_mobile', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $customer['alt_mobile']
)
);
?>
</td>
<?php
else:
?>
<td> <strong>Same as Above</strong> </td>
<?php
endif;
?>
<?php
echo $this->Form->input(
'Customer.id', array(
'type' => 'hidden',
'value' => $customer['id']
)
);
?>
<?php
echo $this->Form->input(
'Customer.id', array(
'type' => 'hidden',
'value' => $customer['id']
)
);
?>
<?php
echo $this->Form->input(
'OrderProduct.id', array(
'type' => 'hidden',
'value' => $datas['order_products'][$index]['id']
)
);
?>
<td >
<div class="controls center">
<div class="form-actions">
<div class="row">
<div class="col-md-4">
<?php
echo $this->Form->button(
'Save Changes', array('class' => 'btn green', 'type' => 'submit')
);
?>
</div>
<div class="col-md-4">
<?php
echo $this->Form->button(
'Delete', array('class' => 'btn btn-danger', 'type' => 'submit')
);
?>
</div>
<div class="col-md-4">
<?php
echo $this->Form->button(
'Add New', array('class' => 'btn green', 'type' => 'submit')
);
?>
</div>
</div>
</div>
</div>
</td>
</tr>
<?php
echo $this->Form->end();
endforeach;
?>
</tbody>
</table>
</div>
</div>
<!-- END EXAMPLE TABLE PORTLET-->
</div>
</div>
<!-- END PAGE CONTENT -->
</div>
</div>
<!-- END CONTENT -->
但是当我点击保存更改时,没有提交删除或添加新按钮表单。我可能错过了一个非常基本的问题,但我自己找不到。任何帮助将不胜感激。
答案 0 :(得分:1)
您必须为每个提交按钮指定一个名称属性。
请尝试以下代码:
<style type="text/css">
.alert {
padding: 6px;
margin-bottom: 5px;
border: 1px solid transparent;
border-radius: 4px;
text-align: center;
}
input#OrderProductPieces {
display: inline;
float: l;
width: 50px;
}
th,td{
text-align: center;
}
</style>
<div class="page-content-wrapper">
<div class="page-content">
<!-- BEGIN PAGE HEADER-->
<h3 class="page-title">
Edit this order <small>Edit can't be performed when it delivered</small>
</h3>
<!-- END PAGE HEADER-->
<!-- BEGIN PAGE CONTENT-->
<div class="row">
<div class="col-md-12">
<!-- BEGIN EXAMPLE TABLE PORTLET-->
<div class="portlet box blue">
<div class="portlet-title">
<div class="caption">
<i class="fa fa-phone"></i>Edit Order
</div>
<?php echo $this->Session->flash(); ?>
<div class="tools">
<a href="javascript:;" class="reload">
</a>
</div>
</div>
<div class="portlet-body">
<table class="table table-striped table-hover table-bordered" id="sample_editable_1">
<thead>
<tr>
<th>Product Info </th>
<th>Customer Info</th>
<th > Action</th>
</tr>
</thead>
<tbody>
<?php
$order = $datas['orders'];
$customer = $datas['customers'];
$order_products = $datas['order_products'];
$product = $datas['products'];
$psettings = $datas['psettings'];
// pr($datas);
// exit;
foreach ($datas['products'] as $index => $product):
echo $this->Form->create('OrderProduct', array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'class' => 'form-horizontal',
'novalidate' => 'novalidate',
)
);
?>
<tr >
<td>
<img src="<?php echo $this->webroot . 'productImages/small/' . $psettings[$index]['small_img'] ?>" width="37" height="34">
<span class="cart-content-count">x <?php
echo $this->Form->input(
'pieces', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $order_products[$index]['pieces']
)
);
?>
</span>
<span>
<?php echo $product['name'] . ' By ' . $product['writer']; ?>
</span>
</td>
<?php
if ($index == 0):
?>
<td>
<?php
echo $this->Form->input(
'Customer.name', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $customer['name']
)
);
?>
<?php
echo $this->Form->input(
'Customer.city', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $datas['city']['name']
)
);
?>
<?php
echo $this->Form->input(
'Customer.location', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $datas['location']['name']
)
);
?>
<?php
echo $this->Form->input(
'Customer.mobile', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $customer['mobile']
)
);
?>
<?php
echo $this->Form->input(
'Customer.alt_mobile', array(
'class' => 'form-control ',
'type' => 'text',
'value' => $customer['alt_mobile']
)
);
?>
</td>
<?php
else:
?>
<td> <strong>Same as Above</strong> </td>
<?php
endif;
?>
<?php
echo $this->Form->input(
'Customer.id', array(
'type' => 'hidden',
'value' => $customer['id']
)
);
?>
<?php
echo $this->Form->input(
'Customer.id', array(
'type' => 'hidden',
'value' => $customer['id']
)
);
?>
<?php
echo $this->Form->input(
'OrderProduct.id', array(
'type' => 'hidden',
'value' => $datas['order_products'][$index]['id']
)
);
?>
<td >
<div class="controls center">
<div class="form-actions">
<div class="row">
<div class="col-md-4">
<?php
echo $this->Form->button(
'Save Changes', array('class' => 'btn green', 'name'=>'save', 'type' => 'submit')
);
?>
</div>
<div class="col-md-4">
<?php
echo $this->Form->button(
'Delete', array('class' => 'btn btn-danger', 'name'=>'delete','type' => 'submit')
);
?>
</div>
<div class="col-md-4">
<?php
echo $this->Form->button(
'Add New', array('class' => 'btn green','name'=>'add','type' => 'submit')
);
?>
</div>
</div>
</div>
</div>
</td>
</tr>
<?php
echo $this->Form->end();
endforeach;
?>
</tbody>
</table>
</div>
</div>
<!-- END EXAMPLE TABLE PORTLET-->
</div>
</div>
<!-- END PAGE CONTENT -->
</div>
</div>
<!-- END CONTENT -->
在你的控制器上你可以检查点击了哪个按钮:
if(isset($this->request->data['OrderProduct']['save'])){
}
if(isset($this->request->data['OrderProduct']['delete'])){
}
if(isset($this->request->data['OrderProduct']['add'])){
}
希望得到这个帮助。