不能将标量值用作数组 - PHP Octobercms

Cannot use a scalar value as an array - PHP Octobercms

我以前有过这个工作,但没有。我的模型中有一个数组,在一个组件中调用该数组并尝试将其设置为页面变量,但它拒绝拥有它。

型号 - Profile.php

public static $ajaxSortingOptions = array(
        'count_views desc' => 'Most Popular',
        'count_photos desc' => 'Most Photos',
        'count_videos desc' => 'Most Videos',
        'created_at desc' => 'Recent Members',
        'random' => 'Random'
    );

组件 - Profiles.php

public $sortingOptions;

public function getAjaxSortOrderOptions()
    {
        return Profile::$ajaxSortingOptions;
    }

public function onRun()
    {   

        $this->listProfiles();

        $this->page['sortingOptions'] = $this->getAjaxSortOrderOptions();

    }

在我看来

<select class="dropdown" name="Filter[sort]">
                                        <option value="">Select</option>
                                        {% for key,value in sortingOptions  %}
                                            <option value="{{key}}">{{ value }}</option>
                                        {% endfor %}
                                    </select>

不能将标量值用作数组

/var/www/public/plugins/libre/membership/components/Profiles.php line 147

有问题的行

$this->page['sortingOptions'] = $this->getAjaxSortOrderOptions();

请看这个简单的测试例子:

class foo{

    protected $page=1;

    public function __construct(){

        $this->page['bar'] = 'hello';
    }

}

new foo;

Sandbox

输出

<br />
<b>Warning</b>:  Cannot use a scalar value as an array in <b>[...][...]</b> on line <b>9</b><br />

我只是想把它放在这里,所以答案是一个实际的答案。

Thanks, I had this bit of code in $this->page = $this->page['page'] = $this->profiles->currentPage(); somewhere else

正如我在评论中所说,做这样的事情很容易,因为它们在当时是有效的。就像使用 = 代替 == 一样,很难仅通过它引起的级联效应来发现错误。

干杯!