Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2 Pjax不能正常工作_Php_Yii2_Pjax - Fatal编程技术网

Php Yii2 Pjax不能正常工作

Php Yii2 Pjax不能正常工作,php,yii2,pjax,Php,Yii2,Pjax,我有一个pjax表单,在这个表单中,我应该根据作者姓名的第一个字母来过滤他们。但每次pjax都在刷新页面。控制台中没有错误,在网络选项卡中看不到错误请求(可能是因为刷新无法看到)。经过几次测试后,我明白问题出在代码$authorModels=$dataProvider->getModels()的数据行中。如果在它之前我var\u dump,它是可以的,但是在这之后没有var\u dump响应($authorModels=$dataProvider->getModels();var_dump($a

我有一个pjax表单,在这个表单中,我应该根据作者姓名的第一个字母来过滤他们。但每次pjax都在刷新页面。控制台中没有错误,在
网络
选项卡中看不到错误请求(可能是因为刷新无法看到)。经过几次测试后,我明白问题出在代码
$authorModels=$dataProvider->getModels()的数据行中。如果在它之前我
var\u dump
,它是可以的,但是在这之后没有
var\u dump
响应<代码>($authorModels=$dataProvider->getModels();var_dump($authorModels);die;
),页面将被刷新。这是我的操作:

public function actionAuthors(){

$authorsPage = Page::findOne(46);
$banner = CategoryImage::find()->where(['page_id' => 46])->one();
$lang = Lang::getCurrent();
$randomAuthors = Author::find()->where('active=1')->orderBy(new Expression('rand()'))->limit(5)->all();
$randomBooks = Product::find()->where('active=1')->orderBy(new Expression('rand()'))->limit(4)->all();
$bookPage = Page::findOne(45);
$en_arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
$bg_arr = ['а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', ' й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ш', 'щ', 'ъ', 'ю', 'я'];
$array_in_use = [];
$pageSize = 5;

if(Yii::$app->request->isPjax){

    if(isset($_GET['letter']) && $_GET['letter'] != ''){

        $letter = '';
        if($lang->url == "en"){
            $letter = $en_arr[$_GET['letter']];
        }else if($lang->url == "bg"){
            $letter = $bg_arr[$_GET['letter']];
        }

        $sql = Yii::$app->db->createCommand("SELECT * 
                                             FROM `author` as a
                                             LEFT JOIN `authorLang` as al ON a.`id`=al.`author_id`
                                             WHERE a.`active`=1 
                                             AND al.`language`='$lang->url'
                                             AND al.`names` LIKE '$letter%'")
                                            ->queryAll();
        $countAuthors = count($sql);

        $dataProvider = new SqlDataProvider([
            'sql' => $sql,
            'totalCount' => $countAuthors,
            'pagination' => [
                'pageSize' => $pageSize,
                'route' => Yii::$app->getRequest()->getQueryParam('first_step')
            ]
        ]);

        $authorModels = $dataProvider->getModels();

        $pagination = new Pagination([
           'totalCount' => $countAuthors,
            'pageSize' => $pageSize,
            'route' => Yii::$app->getRequest()->getQueryParam('first_step')
        ]);

        return $this->renderPartial('authors', [
            'pagination' => $pagination,
            'authorModels' => $authorModels,
        ]);
    }
}
我的js:

function pjaxFilterForm() {
    var dataString = $("#filter-group2").serialize();
    $.pjax.defaults.timeout = false;
    $.pjax({
        container: "#productGrid",
        url: location.href.split("?")[0],
        data: dataString,
        scrollTo: false
    });
    return false;
}
视图:



    我不知道这是否是唯一的一件坏事,但从中可以看出,
    sql
    参数需要字符串,但你给出了一个数组。即使你删除
    ->queryal()
    你仍然会得到一个不好的对象。所以,要给出字符串,你可以简单地作为字符串编写,而不使用
    Yii::$app->db->createCommand

    $sql = "SELECT * FROM `author` as a LEFT JOIN `authorLang` as al ON a.`id`=al.`author_id` WHERE a.`active`=1 AND al.`language`='$lang->url' AND al.`names` LIKE '$letter%'";
    

    谢谢!我一到笔记本电脑就会试试:)这就是问题所在!现在天气很好。非常感谢!您不使用yii2ar模型抽象的原因是什么?
    $sql = "SELECT * FROM `author` as a LEFT JOIN `authorLang` as al ON a.`id`=al.`author_id` WHERE a.`active`=1 AND al.`language`='$lang->url' AND al.`names` LIKE '$letter%'";