php – Install Yii2 extension manually without using Composer-ThrowExceptions

Exception or error:

I want to install Select 2 extension widget manually with Yii2 Framework without using composer.

I done the following steps but it’s not working.

1) Added yii2-widget-select2 to vendor/yii-soft

2) Added following code in my yii-soft/extensions.php:

'yiisoft/yii2-widget-select2' => array(
    'name' => 'yiisoft/yii2-widget-select2',
    'version' => '2.0.3.0',
    'alias' =>
    array(
        '@yii/kartik' => $vendorDir . '/yiisoft/yii2-widget-select2',
    ),
),

3) Added display in view form:

use kartik\select2\Select2;

<?php echo Select2::widget([
    'model' => $model,
    'attribute' => 'state_2',
    'data' => $data,
    'options' => ['placeholder' => 'Select a state ...'],
    'pluginOptions' => [
        'allowClear' => true,
    ],
]); ?>

And It shows the following error:

PHP Fatal Error – yii\base\ErrorException. Class
‘kartik\select2\Select2’ not found

How to solve:

It’s highly recommended to use composer instead.

But if you want to do it manually:

1) Download archive of needed version from Github.

2) Open composer.json.

3) Find PSR-4 autoload section and remember it, in your case: kartik/select2.

4) Extract files to corresponding folder in vendor: vendor/kartik/select2 (not yiisoft!).

5) Add to vendor/composer/autoload_psr4.php:

'kartik\\select2\\' => array($vendorDir . '/kartik/select2'),

6) Add to vendor/yiisoft/extensions.php:

'kartik/select2' => array (
    'name' => 'kartik/select2',
    'version' => '2',
    'alias' => array (
        '@kartik/select2' => $vendorDir . '/kartik/select2',
    ),
),

samdark, one of the core contributors has the article in russian about it on his official blog here. It’s basically brief translated version.

As you can see it’s quite a lot of work to do. Multiply it by number of extensions and it becomes pain.

Seriously, use composer. If the hoster doesn’t support it, find another one.

Answer:

You can use yii2-workbench package. It designed for easy intergrate package without composer. It support composer autoload and bootstrap

Answer:

It is subrepository .GIT , delete .git from vendor\kartik-v\yii2-widget-select2 and git rm --cached yii2-widget-select2

Stash, Commit,Push.

Leave a Reply

Your email address will not be published. Required fields are marked *