10
votes

i downloaded the advanced template, extracted it and changed the root documents for the back-end and the front-end, but i can't seem to figure out how to get Gii working to perform the crud operations.

there is require and require-dev field in the composer.JSON i included gii in both of them and each one separately with no luck.

i also tried getting the template through composer, and while installing i saw gii as installed, but still could not get it to work.

this is where i got my Yii template: https://github.com/yiisoft/yii2-app-advanced

5
and how do you call gii? it must work by default.Alex
Did you solve this? I have the exact same issue. The only difference is I installed everything via composer.synapze
@synapze yes i did, i'm sorry i did not provide an answer. i had this 'modules' => ['gii' => 'yii\gii\Module'], missing from my backend/config/main.php. my project is in backend, if yours is somewhere else put this accordingly.tareq
What's the error you get? Can you open gii? Is the CRUD generator the only stuff which is not working? Are you accessing it from localhost?schmunk

5 Answers

21
votes

This is how to get Gii working from a remote server for an advanced setup template.

In the frontend config file. For example:

/frontend/config/main-local.php

Add the following code:

if (!YII_ENV_TEST) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = 'yii\debug\Module';

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii']=[
      'class' =>  'yii\gii\Module',
      'allowedIPs' => ['*'],
    ];
}

The interesting part is the Gii array which has been modified.

11
votes

Step 1: Add Following line to required-dev of composer.json

"yiisoft/yii2-gii": "*"

Step 2: Update your composer. Step 3: Add Following line to your frontend/config/main.php file. Don't incude these ..........

  'modules' => [
    ............
    'gii' => [
      'class' => 'yii\gii\Module', //adding gii module
      'allowedIPs' => ['127.0.0.1', '::1']  //allowing ip's 
    ],
    ...........
  ]

Step 4: If you have enabled your clean url then go to

project_name/frontend/web/gii

if not then go to

project_name/frontend/web/index.php?r=gii

You can follow the link yii2_gii

5
votes

Like described in the Docs you have to adjust the allowed IPs in the /frontend/config/main-local.php:

    if (!YII_ENV_TEST) {
      ...
      $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1', '192.168.*.*']
      ];
    }

If you have modified your /frontend/config/main.php like this for pretty URLs:

    return [
    ...
    'components' => [
      ...
      'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false
      ],
      ...
    ];

You can call gii with the URL

    yourVM.local/gii

(Having yourVM.local point to your Frontend Module in your Hosts file.)

2
votes

Also, try this if gii still does not work:

This should be well documented by the yii team!

After I used the init command, in /frontend/config/main-local.php, I found:

if (!YII_ENV_TEST) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = 'yii\debug\Module';

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yii\gii\Module';
}

My app is in dev mode, and te above declaration, stops my gii to work, so ... comment that line

1
votes

I had to comment out the urlManager element (disabling pretty Urls) in 'components' in the relevant config file (actually commented out by default).

backend/config/main.php

Before disabling pretty Urls I could load the Gii page, but when attemtping to load any of the generator pages (Controller, Model, etc.) I was redirected to the home page.