2017-08-18 09:34:34| 分类: xmdsys、cmf | 标签: |举报 |字号大中小 订阅
前台直接提交功能:
表单:
<form name="pubbox" id="pubbox" action="{:U('portal/Post365/add_post')}" class="form-horizontal js-ajax-forms" method="post" enctype="multipart/form-data" >
<div class="row">
<div class="span9 " >
<table class="p1 table" style="margin:0px;border:10px solid #f9f9f9;" >
<tr style="display: none">
<th align="right" width="80">自动分类:</th>
<td>
<input type="text" name="term[]" value="{$term_id}"></td>
</tr>
<tr>
<th align="right" style="padding-top:20px;" >发布类型:</th>
<td style="padding-top:20px;">
<select name="post[pminclass]" required class="valid" aria-invalid="false">
<foreach name="minclass" item="vo">
<option value="{$vo}">{$vo}</option>
</foreach>
</select>
</td>
</tr>
<tr>
<th align="right" >信息标题:</th>
<td >
<input type="text" style="width:500px;" autocomplete="off" maxlength="100" name="post[post_title]" id="title" required value="" placeholder=""/>
<span class="form-required">* 请少于100个字</span>
</td>
</tr>
<tr>
<th align="right" >详细内容:</th>
<td >
<textarea id="info" maxlength="500" style="width:500px;height:150px;resize: vertical;"
name="post[post_content]" required value="" placeholder="详细描述"></textarea>
<span class="form-required"></span>
<p>提示:最多可输入<span style="color:blue">500</span>个字,已经输入了<span id="word" style="color:red">0</span>个字。</p>
<!-- JavaScript 最底部-->
</td>
</tr>
<tr>
<th align="right">删除密码:</th>
<td>
<input type="text" style="width:100px;" autocomplete="off" maxlength="8" name="post[delpass]" id="delpass" required value="" placeholder=""/>
<span class="form-required">* 请牢记,用于删除信息</span>
</td>
</tr>
<tr>
<th align="right">验证码:</th>
<td>
<input type="text" style="width:100px;" autocomplete="off" maxlength="4" name="verify" id="verify" required value="" placeholder=""/>
<span class="form-required">{:sp_verifycode_img('length=4&font_size=14&width=100&height=32&charset=2345678&use_noise=1&use_curve=0','style="cursor: pointer;" title="点击更换"')}</span>
</td>
</tr>
<tr>
<th></th>
<td >
<button class="btn btn-primary js-ajax-submit" style="width:120px;" type="submit">提 交</button>
</td>
</tr>
</table>
</div>
</div>
</form>
前台提交控制器需要自行建一个,如post365控制器
//前台文章添加提交
public function add_post(){
if (IS_POST) {
if(!sp_check_verify_code()){
$this->error( '验证码不正确');
}
if(empty($_POST['term'])){
$this->error("请至少选择一个分类!");
}
if(!empty($_POST['photos_alt']) && !empty($_POST['photos_url'])){
foreach ($_POST['photos_url'] as $key=>$url){
$photourl=sp_asset_relative_url($url);
$_POST['smeta']['photo'][]=array("url"=>$photourl,"alt"=>$_POST['photos_alt'][$key]);
}
}
$_POST['smeta']['thumb'] = sp_asset_relative_url($_POST['smeta']['thumb']);
$_POST['post']['post_modified']=date("Y-m-d H:i:s",time());
$_POST['post']['post_date']=date("Y-m-d H:i:s",time());
$_POST['post']['ip']= get_client_ip();
$_POST['post']['post_author']=2;//发布者的id 不能为空 前台就会发布失败 必须先建一个用户 ID 设置为2 ,查询会关联用户表所以必须 要有用户ID,可以把这个 管理员或用户 拉黑不用即可。只为前台发布文件有个id作用。
$article=I("post.post");
$article['smeta']=json_encode($_POST['smeta']);
$article['post_content']=htmlspecialchars_decode($article['post_content']);
$result=$this->posts_model->add($article);//添加成功后 返回的ID值
if ($result) {
//如果文章添加成功则,同时添加关联表记录
foreach ($_POST['term'] as $mterm_id){
$this->term_relationships_model->add(array("term_id"=>intval($mterm_id),"object_id"=>$result));
}
$this->success("发布成功!",'',10);
} else {
$this->error("发布失败!",'',10);
}
}
}
后台分类管理中增加信息类型项,如minclass, 先在数据库中添加好这个列
添加后台表单 portal\adminterm\add.html
<!-- 小类设置zn -->
<div class="control-group">
<label class="control-label">子类设置</label>
<div class="controls">
<textarea name="minclass" rows="3" cols="90"></textarea><span>请用|分开</span>
</div>
</div>
portal\adminterm\edit.html
<!-- 小类设置zn -->
<div class="control-group">
<label class="control-label">子类设置</label>
<div class="controls">
<textarea name="minclass" rows="3" cols="90">{$data.minclass}</textarea><span>请用|分开</span>
</div>
</div>
后台列表:adminterm\index.html
<tr>
<th width="50">{:L('SORT')}</th>
<th width="50">ID</th>
<th>{:L('NAME')}</th>
<th>{:L('CATEGORY_TYPE')}</th>
<th>子类</th>
<th>{:L('ACTIONS')}</th>
</tr>
后台列表:admintermcontroller.class.php
<td>\$minclass</td>
前台列表页控制器 修改:
//查询分类小分类结果并转换为数组zn
$table1=M("terms");
$where['term_id'] = $term_id;
$rs=$table1->where($where)->getField('minclass');
$minclass=explode('|',$rs);
$this->assign('minclass',$minclass);
// $this->assign('minclass',$minclass);//必须在模板后才有效.
前台列表模板修改:
<tr>
<th align="right" style="padding-top:20px;" >发布类型:</th>
<td style="padding-top:20px;">
<select name="post[pminclass]" required class="valid" aria-invalid="false">
<foreach name="minclass" item="vo">
<option value="{$vo}">{$vo}</option>
</foreach>
</select>
</td>
</tr>
评论