我有一个视图,其中有一个管理产品的表单(添加新产品或 - 如果 id 已通过 - 编辑现有产品)。如果传递了一个id,那么表单动作应该是例如'admin/product/manage/5',如果没有传递id,那么它应该是这样的'admin/product/manage'。
<?php echo form_open('admin/product/manage/{optional product id}', array('class' => 'ajax-form')); ?>
我还创建了这条路线:
$route['admin/product/manage'] = "admin/product/manage";
$route['admin/product/manage/(:num)'] = "admin/product/manage/$1";
如何使我的表单操作正常工作?是否有可能以某种方式将路线放入动作中?
这是我的控制器:
public function manage($id = NULL){
//fetch a single product to edit or create a new one
if (isset($id) === true) {
$data['prod'] = $this->product_model->get($id);
$data['vers'] = $this->product_version_model->get_by('product_id',$id);
} else {
$data['prod'] = $this->product_model->make_new();// this returns $product->product_name = ''; in order to be empty the input field and not throughing errors
}
$this->product_model->save_product();
$this->product_version_model->save_version();
// load the view
$this->layout->view('admin/products/manage', $data);
}
这是我的看法:
<?php echo form_open('admin/product/manage', array('class' => 'ajax-form')); ?>
<p>
<label for="product_name">Product *</label>
<input type="text" name="product_name" value="<?php echo set_value('product_name', $prod->product_name); ?>" />
<?php echo form_error('product_name'); ?>
</p>
<?php echo form_close() . PHP_EOL; ?>