ไม่สามารถใช้วัตถุประเภท TbGridView เป็นอาร์เรย์ Yiibooster

ฉันกำลังพยายามตั้งค่ามุมมองกริดใหม่ใน yii booster ในขณะที่ส่งตัวแปรผ่านที่จุดเริ่มต้นของมุมมองเพื่อจัดเรียงการจัดรูปแบบ

ฉันคิดว่าฉันไม่ได้ส่งตัวแปรอย่างถูกต้องตามบรรทัดนี้

$gridColumns = $this->widget('booster.widgets.TbGridView', array(

ฉันจะใช้ตัวแปรนี้อย่างไร ฉันสามารถสร้างอาร์เรย์แบบฟอร์มใหม่ได้โดยไม่ต้องใช้ yiibooster แต่เมื่อเปิดใช้งานวิดเจ็ตแล้ว มันจึงไม่ชอบชื่อตัวแปรอีกต่อไป

ปัญหาคือฉันได้รับข้อผิดพลาดในชื่อโพสต์

$gridColumns = $this->widget('booster.widgets.TbGridView', array(
    'id' => 'delegate-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        //  'id',
        array(
            'name' => 'forename',
            'type' => 'raw',
            'value' => 'CHtml::link($data->forename, array("user/view", "id" => $data->id))',
        ),
        'surname',
//        'facilities',
        //  'telephone',
        //  'address_id',
        /*
          'logo_path',
         */
        array(
            'class' => 'booster.widgets.TbButtonColumn',
        ),
    ),
));

$groupGridColumns = $gridColumns;
$groupGridColumns[] = array(
    'name' => 'firstLetter',
    'value' => 'substr($data->surname, 0, 1)',
    'headerHtmlOptions' => array('style' => 'display:none'),
    'htmlOptions' => array('style' => 'display:none')
);

$this->widget('booster.widgets.TbGroupGridView', array(
    'id' => 'user-grid',
    'type' => 'striped bordered condensed highlight',
    //'template' => "{items}",
    'dataProvider' => $model->search(),
    'filter' => $model,
    'extraRowColumns' => array('firstLetter'),
    'extraRowExpression' => '"<b style=\"font-size: 3em;  color: #333;\">".substr($data->surname, 0, 1)."</b>"',
    'extraRowHtmlOptions' => array('style' => 'padding:10px;text-align: center;'),
    'columns' => $groupGridColumns,

));

person Alex    schedule 01.10.2015    source แหล่งที่มา


คำตอบ (1)


เป็นเพราะคุณให้วัตถุประเภท CGridView ถึง TbGroupGridView เป็นพารามิเตอร์

$groupGridColumns = $gridColumns;

คุณกำลังใส่วัตถุประเภท TbGridView($gridColumns) ใน $groupGridColumns แล้วมอบให้กับ TbGroupGridView ของคุณ แต่ TbGroupGridView columns property คาดว่าค่าของมันจะเป็นอาร์เรย์ของอาร์เรย์ (คำจำกัดความของคอลัมน์) ดังนั้นจึงเกิดข้อยกเว้นใหม่เมื่ออยู่ในเซลล์แรกของ $groupGridColumns ค้นหาวัตถุ คุณไม่จำเป็นต้องมีส่วนแรก และหากมีการเปลี่ยนแปลงบางอย่าง โค้ดของคุณควรทำงานได้ดีเมื่อเปิดใช้งานการกรอง

$this->widget('booster.widgets.TbGroupGridView', array(
    'id' => 'user-grid',
    'type' => 'striped bordered condensed highlight',        
    'dataProvider' => $model->search(),
    'filter' => $model,
    'extraRowColumns' => array('firstLetter'),
    'extraRowExpression' => '"<b style=\"font-size: 3em;  color: #333;\">".substr($data->surname, 0, 1)."</b>"',
    'extraRowHtmlOptions' => array('style' => 'padding:10px;text-align: center;'),
    'columns' => array(
           array(
                 'name' => 'forename',
                 'type' => 'raw',
                 'value' => 'CHtml::link($data->forename, array("user/view", "id" => $data->id))',
           ),
           'surname',
           array(
                 'name' => 'firstLetter',
                 'value' => 'substr($data->surname, 0, 1)',
                 'headerHtmlOptions' => array('style' => 'display:none'),
                 'htmlOptions' => array('style' => 'display:none')
           )        
           array(
                 'class' => 'booster.widgets.TbButtonColumn',
           ),
    )
));
person Mohammad Eghlima    schedule 19.01.2016