1

if内で条件を使用しようとしていますarrayが、機能していません。どうすれば修正できますか?

コード:

public function behaviors()
{
    return array(
        'withRelated'=>array(
            'class'=>'ext.wr.WithRelatedBehavior',
        ),
        Yii::app()->controller->id != 'apiv1' ?
        'datetimeI18NBehavior'=>array(
            'class' => 'ext.DateTimeI18NBehavior',
        ), : false,
    );
}

エラー:

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in .../models/Users.php on line 77
4

3 に答える 3

5

これは、問題に対する適切なアプローチです。

public function behaviors()
{
    $arr = array(
        'withRelated'=>array(
            'class'=>'ext.wr.WithRelatedBehavior',
        )        
    );
    $bool = Yii::app()->controller->id != 'apiv1' ? true : false;
    if($bool) {
        $arr['datetimeI18NBehavior'] = array(
            'class' => 'ext.DateTimeI18NBehavior',
        );
    } else {
        $arr[] = false;
    }
}
于 2013-01-29T13:52:27.277 に答える
2

試してみてください:

'datetimeI18NBehavior' => ( Yii::app()->controller->id != 'apiv1' ) ? array(
    'class' => 'ext.DateTimeI18NBehavior',
) : false,

その他の(非常に明確な)解決策:

public function behaviors()
{
    $behaviors = array(
        'withRelated'=>array(
            'class'=>'ext.wr.WithRelatedBehavior',
        )
    );

    if ( Yii::app()->controller->id != 'apiv1' ) {
         $behaviors['datetimeI18NBehavior'] = array(
            'class' => 'ext.DateTimeI18NBehavior'
        );
    }

    return $behaviors;
}
于 2013-01-29T13:46:19.540 に答える
0
public function behaviors() {
return array(
'withRelated'=>array(
'class'=>'ext.wr.WithRelatedBehavior',
),
Yii::app()->controller->id != 'apiv1' ?
'datetimeI18NBehavior'=>array(
'class' => 'ext.DateTimeI18NBehavior',
) : false,
);
}

括弧の後のコンマを削除します

于 2013-01-29T15:16:38.743 に答える