Nested modules

Hello,

could someone provide an example of using nested modules with correct URL path in URLManager?

Example of structure backend using modules:




backend/

------modules/

------------Settings (parent module)

------------------modules

------------------------Info (nested module)

------------------------User (nested module)



these settings in URLManager was fine only for parent modules:


'modules' => [

    'settings' => [

        'class' => 'backend\modules\Settings\Settings',

        'modules' => [

            'info' => [

                'class' => 'backend\modules\Settings\modules\Info\Info',

            ],

            'user' => [

                'class' => 'backend\modules\Settings\modules\User\User',

            ],

        ],

    ],

],

...

'urlManager' => [

    'rules' => [

        '<module:[a-zA-Z0-9-]+>/<action:[a-zA-Z0-9-]+>' => '<module>/default/<action>',

    ],

],

So I need working route to /backend/setting/user, /backend/setting/info

I think problem is in URLManager rules, can anybody help me with right configuration of URL rules for modules and nested modules?

Thanks

Hi, Camel! :) I think you forgot add nested module declaration to the your parent module init function like below:


class Settings extends \yii\base\Module

{

    public function init()

    {

        parent::init();


        $this->modules = [

            'info' => [

                'class' => 'app\modules\forum\modules\info\Module',

            ],

        ];

    }

}

and you don’t have a proper directive for nested modules in your urlRules. Check it one more time. Maybe try like this:


'info'=>'settings/info',

'settings/info/<controller:\w+>'=>'settings/info/<controller>',  

'settings/info/<controller:\w+>/<action:\w+>'=>'settings/info/<controller>/<action>'

Thanks, my mistake, it works! :slight_smile: