Модули Yii не работают на моем сайте

У меня есть веб-сайт на основе yii Framework.

Yii версия: 1.1.14

Версия php: выше 5.4

Я попытался установить модуль форума из следующего местоположения

http://www.yiiframework.com/extension/bbii

Я добавил модули в main.php, как указано в файле readme. Но / форум не работает, и я попробовал некоторые другие модули, и ни один из них не работает на моей установке. Я застрял на данный момент, и я попробовал Google, но это похоже на уникальную ошибку, и я не знаю, как ее отладить. Пожалуйста помоги. Спасибо

return array(
        'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
        'name'=>'testapp',
        'preload'=>array('log','bootstrap'),
        'import'=>array(
            'application.models.*',
            'application.components.*',
            'application.vendor.*',
            'application.controllers.NavSort*',
            ),
        'modules'=>array(
            'gii'=>array(
                'class'=>'system.gii.GiiModule',
                'password'=>'123',
                // If removed, Gii defaults to localhost only. Edit carefully to taste.
                'ipFilters'=>array('127.0.0.1','::1'),
                'generatorPaths' => array(
                        'bootstrap.gii'
                    ),
                ),
            'forum'=>array(
                'class'=>'application.modules.bbii.BbiiModule',
                'adminId'=>1,
                'userClass'=>'User',
                'userIdColumn'=>'id',
                'userNameColumn'=>'username',
                ),
            ),
        'homeUrl'=>array('site/login'),
        // application components
        'components'=>array(
            'bootstrap' => array(
                'class' => 'ext.yiibooster.components.Bootstrap',
                ),
            'user'=>array(
                // enable cookie-based authentication
                'allowAutoLogin'=>true,
                ),          
            'session'=>array(
                'autoStart'=>true,
                'sessionName'=>'session',
                'cookieMode' => 'only',
                'timeout'=>86400,
                ),
            'urlManager'=>array(
                'urlFormat'=>'path',
                'showScriptName'=>false,
                //'urlSuffix'=>'.html',
                'urlSuffix'=>'',
                'class' => 'UrlManager',
                'rules'=>array(
                    '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                    '<controller:[\w\-]+>/<action:[\w\-]+>' => '<controller>/<action>',
                     // defaults to a site page if not above
                    '<view:[a-zA-Z0-9-]+>/'=>'site/login',
                    ),
                ),
            'db'=>array(
                'connectionString' => 'pgsql:host=localhost;port=5432;dbname=testdb',
                'emulatePrepare' => false,
                'username' => 'postgres',
                'password' => 'root', 
                //'tablePrefix'=>'',
                'charset' => 'utf8',
                ),
            'errorHandler'=>array(
                'errorAction'=>'site/error',
                ),
            'log'=>array(
                'class'=>'CLogRouter',
                'routes'=>array(
                    array(
                        'class'=>'CFileLogRoute',
                        'levels'=>'error, warning',
                        ),
                    ),
                ),
            ),
        'params'=>array(
            // this is used in contact page
            'adminEmail'=>'info@site.com',
            ),
        );

1 ответ

Решение

Вам не хватает правил URL, которые бы указывали платформу на открытие модуля.

Вы можете использовать оба универсальных правила

'<module:\w+>/<controller:\w+>/<action:[\w-]+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>'                 => '<module>/<controller>',
'<module:\w+>'                                  => '<module>',

Или вы можете создать конкретные правила

'forum/<controller:\w+>/<action:[\w-]+>'        => 'forum/<controller>/<action>',
'forum/<controller:\w+>'                        => 'forum/<controller>',
'forum'                                         => 'forum',

Разница лишь в том, что когда универсальные правила вступают в противоречие с другими правилами, вам следует использовать более конкретные правила.

Например, чтобы заставить Gii в моем приложении работать правильно с моей многоязычной системой, я использую следующее правило

'gii/<controller:\w+>/<action:[\w-]+>'          => 'gii/<controller>/<action>',

И помните, важно, где вы размещаете свои правила URL в этом массиве. Первый, который будет соответствовать, вызовет открытие этого конкретного действия. Узнайте больше об управлении URL.

Другие вопросы по тегам