php - 使用 form_open 函数将 get 参数添加到 URL?
问题描述
我尝试实现标准的 PHP 逻辑来添加、编辑文章到博客,所以我有add 方法:
public function add()
{
$this->load->model('admin/Blog_Model');
if (!empty($this->input->post())) {
$user = $this->Blog_Model->addPost($this->input->post());
}
$this->getForm();
}
编辑方法:
public function edit($id = '')
{
$this->load->model('admin/Blog_Model');
if (!empty($this->input->post())) {
var_dump($id); exit;
$user = $this->Blog_Model->editPost($this->input->post(), $id);
}
$this->getForm($id);
}
和getForm 方法:
public function getForm($id = '')
{
if (!empty($id)) {
$post = $this->Blog_Model->getPost($id);
$data['action'] = 'admin/blog/edit';
} else {
$data['action'] = 'admin/blog/add';
}
$data['formTitle'] = array(
'name' => 'title',
'id' => 'content-title',
'value' => isset($post['title']) ? $post['title'] : '',
'placeholder' => 'Заглавие',
'class' => 'form-control'
);
$data['formContent'] = array(
'name' => 'content',
'id' => 'content-blog',
'value' => isset($post['content']) ? $post['content'] : '',
'placeholder' => 'Съдържание',
);
$data['formButton'] = array(
'type' => 'submit',
'content'=> 'Изпрати',
'class'=> 'btn btn-primary btn-block btn-flat'
);
$data['head'] = $this->load->view('admin/head', NULL, TRUE);
$data['left_column'] = $this->load->view('admin/left_column', NULL, TRUE);
$this->load->view('admin/header', $data);
$this->load->view('admin/blog_form', $data);
$this->load->view('admin/footer');
}
和带有表单的blog_form 视图:
<div class="box-body pad">
<?php echo form_open($action); ?>
<div class="box-body">
<div class="form-group">
<label for="content-title">Заглавие:</label>
<?php echo form_input($formTitle); ?>
</div>
<div class="form-group">
<label for="content_blog">Съдържание:</label>
<?php echo form_textarea($formContent); ?>
</div>
<div class="col-xs-12 col-md-3 pull-right">
<?php echo form_button($formButton); ?>
</div>
</div>
<?php echo form_close(); ?>
</div>
所以..一切都很完美,但我对这部分有疑问:
if (!empty($id)) {
$post = $this->Blog_Model->getPost($id);
$data['action'] = 'admin/blog/edit';
} else {
$data['action'] = 'admin/blog/add';
}
如果是编辑,我想发送GET 参数之类的id 。我认为问题在于我没有使用标准 GET 参数而不是 site_url 函数,当我在这里显示所有文章时:
<?php foreach ($posts as $post) { ?>
<tr>
<td><?php echo $post['id']; ?></td>
<td><?php echo $post['title']; ?></td>
<td><?php echo $post['content']; ?></td>
<td><div class="btn-group">
<a href="<?php echo site_url('admin/blog/edit/'.$post['id']); ?>" class="btn btn-success">Редактирай</a>
<a href="<?php echo site_url('admin/blog/delete/'.$post['id']); ?>" class="btn btn-danger">Изтрий</a>
</div></td>
</tr>
<?php } ?>
解决方案
尝试改变
if (!empty($id)) {
$post = $this->Blog_Model->getPost($id);
$data['action'] = 'admin/blog/edit';
} else {
$data['action'] = 'admin/blog/add';
}
至
if (!empty($id)) {
$post = $this->Blog_Model->getPost($id);
$data['action'] = 'admin/blog/edit/'.$id; // pass $id to edit controller
} else {
$data['action'] = 'admin/blog/add';
}
推荐阅读
- git - 如何传递文件名参数 gitconfig diff textconv?
- firebase - Firebase 身份验证返回“getGoogleApiForMethod() 返回 Gms:com.google.firebase.auth.api.internal.zzal@7f42afc”
- php - 如果来自特殊链接或站点,将用户重定向到其他代码
- r - 将两个 addLayersControl 添加到一张地图(标记位于多个组中)
- python - lambda 表达式中的未定义变量
- batch-file - 需要创建一个批处理文件
- angular - Angular Universal 错误 - app.auth 不是函数
- c# - 在 Postgres 数据库中创建用户
- python - 如何从基于python hashbang的powershell运行python程序?
- scala - Scala 猫:尝试对 `Eq` 特征使用 `===` 语法时出现隐含问题