我是codeinginter的新手。这与我过去的编码经验非常不同,我目前想做的是将数据发布到服务器并检查。由于输入框是动态生成的,所以我的添加功能很乱。
首先对于每个数据,它必须有 1 个标题和 1 个内容,并且随机编号(或没有)一个链接组(链接文本和链接),例如 LinkText1 、 Link1 、 LinkText2 、 Link2 ......等等。
我想以更优雅的方式做到这一点。
我现在做的是在 models 中有 2 种方法,1 用于 title 和 content ,在对它感兴趣之后,返回最后一个 id ,基于这个 id 附加所有其他链接组。
public function add()
{
//if save button was clicked, get the data sent via post
if ($this->input->server('REQUEST_METHOD') === 'POST')
{
//form validation
$this->form_validation->set_rules('title', '消息標題', 'required');
$this->form_validation->set_rules('content', '消息內容', 'required');
foreach ($this->input->post() as $key => $value) {
if (strstr($key,"linkText") !== False) {
$this->form_validation->set_rules($key, '連結標題', 'required');
}
else if (strstr($key,"link") !== False) {
$this->form_validation->set_rules($key, '連結地址', 'required');
}
}
$this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>');
//if the form has passed through the validation
if ($this->form_validation->run())
{
$data_to_store = array(
'title' => $this->input->post('title'),
'content' => $this->input->post('content')
);
//if the insert has returned true then we show the flash message
$lastID = $this->news_model->store_news($data_to_store);
if($lastID !== False){
foreach ($this->input->post() as $key => $value) {
if (strstr($key,"linkText") !== False) {
$linkText = $key;
}else if (strstr($key,"link") !== False) {
$link = $key;
}
if (isset($linkText) && isset($link)) {
$data_to_store = array(
'title' => $this->input->post($linkText),
'url' => $this->input->post($link),
'news_id' => $lastID
);
if($this->news_model->store_news_link($data_to_store)){
$data['flash_message'] = TRUE;
} else {
$data['flash_message'] = FALSE;
}
}
}
}else{
$data['flash_message'] = FALSE;
}
}else{
$data['flash_message'] = FALSE;
}
}
//load the view
$data['main_content'] = 'admin/news/add';
$this->load->view('includes/template', $data);
}
它循环了 2 次,还有很多重复的代码,有没有更优雅的方法来实现呢?感谢您的帮助。