小左闲谈

Ajax弹窗编辑无刷新查询赋值

In 学习  @2016-03-04

题目很拗口,需求是这样的;
在项目中有一个列表页的右侧的编辑按钮是弹窗式的这时候就没有url跳转,无法使用一般的跳转查询取值,需要通过点击触发取值查询并赋值的过程。

封装了一个jQueryAjax函数:

function addhidden(id,url){
    var res = 0;
    var data ={"id":id};
    res = $.ajax({
        type:'POST',
        url:url,
        data:data,
        async :false,
        dataType : "json",
        success: function(data){
        },
    })
    res = res.responseText;
    res = eval("("+res+")");
    return res;
    }

调用上面的addhidden函数查询值并返回数据;

//当点击该标签时触发事件
$(".btn.btn-xs.btn-info.addhidden").click(function(){
        //调用ThinkPHP控制器中的isfind函数执行查询
    var url="{:U('Blog/isfind')}";
    //从模板num标签中为id赋值
        var id= $(this).attr("num");
    var data = addhidden(id,url);
    $("#id").val(data.id);
    $("#form-field-mask-2").val(data.title);
    $("#form-field-mask-3").val(data.sort);
</pre>

Blog控制器类的isfind函数:
<pre lang="php" line="0">
//弹窗修改分类取值
public function isfind(){
    if($_POST['id']){
        $blog=M("blog");
        $res=$blog->where(array('id'=>$_POST['id']))->field("id,title,sort")->find();
        $this->ajaxReturn($res);
    }
}

模板文件:

<tbody>
    <volist id="list" name="list">
    <tr>
        <td>{$list.title}</td>
        <td>{$list.time}</td>
        <td>
            <div class="visible-md visible-lg hidden-sm hidden-xs btn-group">
                <a class="btn btn-xs btn-info addhidden" href="#" name="edit" data-toggle="modal" data-target="#Edit" num="{$list.id}" title="编辑">
                <i class="icon-edit bigger-120"></i>
                </a>
                <a class="btn btn-xs btn-danger" name="trash" title="删除" num="{$list.id}">
                <i class="icon-trash bigger-120"></i>
                </a>
                <a class="btn btn-xs btn-warning" href="{:U('Blog/adds',array('pid'=>$list['id'],'title'=>$list['title']))}" name="add" title="添加" num="{$list.id}">
                <i class="icon-plus bigger-120"></i>
                </a>    
                <a class="btn btn-xs btn-success" href="{:U('Blog/mulcolum',array('pid'=>$list['id'],'title'=>$list['title']))}" name="view" title="所属内容" num="{$list.id}">
                <i class="icon-list bigger-120"></i>查看所属内容
                </a>                                                                
            </div>
        </td>
    </tr>
    </volist>
</tbody>
标签: , ,   评论: Ajax弹窗编辑无刷新查询赋值已关闭评论 

ThinkPHP3.2.3实例:volist循环实现分类及文章嵌套输出

In 学习  @2016-03-04

使用ThinkPHP3.2.3开发项目中遇到一个简单而常见的问题。
一个表的下面包含了分类和分类下的文章,先在需要在页面底部分类显示博客的标题,一般我们用Volist标签来循环取值,这里有分类,使用一次volist的嵌套。

数据表结构:

MySQL表结构

需求的效果:

QQ截图20160304155235

控制器:

$blog = M('blog');
$bloglist=$blog->where(array('show'=>1,'pid'=>0))->field('id,title')->limit(3)->order('sort asc')->select();
foreach ($bloglist as $k => $v) {
    $bloglist[$k]["child"]=$blog->where(array('pid'=>$v['id'],'show'=>1))->field('id,title,pid')->order("time desc")->limit(8)->select();
}
$this->assign("bloglist",$bloglist);

前台模板文件:

<volist name="bloglist" id="bloglist">
    <div class="col-md-3 footer-grid">
        <h3>{$bloglist.title}</h3>
            <ul>
            <volist name="bloglist.child" id="child">
            <li><a href="{:U('Blog/details',array('id'=>$child['id']))}">{$child.title}</a></li>
            </volist>
            </ul>
    </div>
</volist>

在工作中遇到的问题,自己不太懂的我就记下来吧,下次再用到就会熟练一点。

标签: , ,   评论: ThinkPHP3.2.3实例:volist循环实现分类及文章嵌套输出已关闭评论 

Ecshop安装过程中(PHP5.5.12)出现的几个错误

In 笔记  @2016-02-16

以下是ECshop安装在PHP5.5.12环境下出现的报错,记录一下。
1.检查安装环境配置的时候报错:

Strict Standards: Non-static method cls_image::gd_version() should not be called statically in D:\X\www\ecshop\install\includes\lib_installer.php on line 31

原因:找到install/includes/lib_installer.php中的第31行 return cls_image::gd_version();然后在找到includes/cls_image.php中的678行,发现gd_version()方法未声明静态static
解决:在includes/cls_image.php中的678function gd_version()改成static function gd_version()

2.检测环境的时候提示:是否支持JPEG是不支持的。
解决:将install/includes/lib_installer.php中第98JPG修改成JPEG

$jpeg_enabled = ($gd_info['JPEG Support']        === true) ? $_LANG['support'] : $_LANG['not_support'];

3.1安装完登录后台报错:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in E:\phpDemo\ecshop\includes\cls_template.php on line 300

原因:在PHP5.5以上版本中preg_replace()函数中用到的修饰符 /ePHP5.5.x 中已经被弃用了。
解决:打开文件includes/cls_template.php300

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
//修改为:
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

类似preg_replace()函数中用到的修饰符 /e 提示替换 preg_replace_callback()的还有几处:
3.2文件includes/cls_template.php493行:

$out = "<?php \n" . '$k = ' . preg_replace("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";
//修改为:
$out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/" , function($r) {return stripslashes(trim($r[1],'\''));}, var_export($t, true)) . ";\n";

3.3文件includes/cls_template.php553行:

$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);
//修改为:
$val = preg_replace_callback("/\[([^\[\]]*)\]/", function($r) {return '.'.str_replace('$','$',$r[1]);}, $val);

3.4文件includes/cls_template.php1069行:

$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se';
$replacement = "'{include file='.strtolower('\\1'). '}'";
$source = preg_replace($pattern, $replacement, $source);

// 修改为:
$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/s';
$source = preg_replace_callback($pattern, function($r){return '{include file='.strtolower($r[1]). '}';}, $source);

4:错误信息:

Strict Standards: Only variables should be passed by reference in E:\web\shopex\includes\cls_template.php on line 422

原因:PHP5.3以上默认只能传递具体的变量,而不能通过函数返回值传递,所以这段代码中的explode就得移出来重新赋值。
解决:将includes\cls_template.php文件422

$tag_sel = array_shift(explode(' ', $tag));

// 修改为:
$tag_arr = explode(' ', $tag);
$tag_sel = array_shift($tag_arr);

5.后台错误信息:

Strict standards: mktime(): You should be using the time() function instead in E:\phpDemo\ecshop\admin\sms_url.php on line 31

打开admin\sms_url.php文件第31行:
打开admin\shop_config.php332行:

$auth = mktime();

// 修改为:
$auth = time();
标签: ,   评论: 5枚