Yii2-codeception Missing submodules config on testing - yii

I'm trying to use codeception for functional testing, in my yii2-advanced-app (like described here https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-testing.md)
The testing works fine with no dependencies, but when I add a sub module, like yii2-user (https://github.com/dektrium/yii2-user), it doesn't seems to load the module bootstrap settings:
yii\base\InvalidParamException: Invalid path alias: #dektrium/user/views in /app/vendor/yiisoft/yii2/BaseYii.php:152
The module is declared in config/main.php
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'modules' => [
'user' => [
'class' => 'dektrium\user\Module',
...
And loaded from config/test.php:
<?php
return yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/main.php'),
...
Am I forgetting something?
Thanks for your help.

Not a solution, but I've had to temporarily comment the following line in my config/main.php out to move past this error:
'view' => [
'theme' => [
'pathMap' => [
// '#dektrium/user/views' => '#frontend/views/user'
],
],

Related

How to add aliases in yii2?

I have extracted mdmsoft extension in my backend/extensions/mdm folder. Added aliases in backend config main.php
'aliases' => [
'#mdm/admin' => '#backend/extensions/mdm'
]
Added module as
[
'modules' => [
'admin' => [
'class' => 'mdm\admin\Module'
]
]
],
It returns me error.Failed to instantiate component or class "mdm\admin\Module".
How I can manage the config file that MDM works from my backend folder
Maybe you have to add line below:
Yii::setAlias('#mdm', dirname(dirname(__DIR__)) . '/backend/extensions/mdm');
into common/config/bootstrap.php ?

controllermap in yii2 return 404

I walk around yii2 manual by copy this code in manual
'controllerMap' => [
'account' => 'yii\app\controllers\UserController',
'article' => [
'class' => 'yii\app\controllers\PostController',
'enableCsrfValidation' => false,
],
],
paste in netbean
just access it
already have UserController
Your namespace is wrong! If you look at documentation, the correct code is like this:
[
'controllerMap' => [
'account' => 'app\controllers\UserController',
'article' => [
'class' => 'app\controllers\PostController',
'enableCsrfValidation' => false,
],
],
]
But you have an extra yii in the beginning of the namespace, so yii\app\controllers\UserController must be app\controllers\UserController.
Also i think you have some problems in url rewriting. If I'm true, you can find an instrument for fixing it in http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#using-pretty-urls and yii2 url rewrite config.

'lessc' is not recognized as an internal or external command, Yii2 WAMP win8

So i normally work on external servers, but decided to set up a local environment in the form of WAMPserver on my windows 8.1 computer.
From (git bash) console, i can run lessc without a problem, but when i install Yii2, and attempt to process .less it says it can't find the command.
AssetConverter command 'lessc "C:/wamp/www/basic/web/css/site.less" "C:/wamp/www/basic/web/css/site.css" --no-color --source-map' failed with exit code 1:
STDOUT:
STDERR:
'lessc' is not recognized as an internal or external command,
operable program or batch file.
Now as far as i can tell, this should work. In fact, when i run that same command from console it works just fine. Am i missing a step here? Any help would be appreciated.
I fixed it just now.
How should you do?
Make sure you can run lessc in cmd windows.If you can't,install it with node.js Install lessc with node.js
Make sure lessc path in system path.Mine is C:\Users\l7861\AppData\Roaming\npm or you can type where lessc in cmd windows to find it.
Make sure you can see lessc path in path_info().If you can't restart your apache server.
Finally you don't need to add addassetManager in config never~~~~~
This below is a discovery process.
I just thought it is a bug on yii2 at first.So I debug it with Phpstrom.And I saw this line:path\to\vendor\yiisoft\yii2\web\AssetConverter.php 91
$command = Yii::getAlias($command);
$command = strtr($command, [
'{from}' => escapeshellarg("$basePath/$asset"),
'{to}' => escapeshellarg("$basePath/$result"),
]);
$descriptor = [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$pipes = [];
$proc = proc_open($command, $descriptor, $pipes, $basePath);
$stdout = stream_get_contents($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
foreach ($pipes as $pipe) {
fclose($pipe);
}
$status = proc_close($proc);
if ($status === 0) {
Yii::trace("Converted $asset into $result:\nSTDOUT:\n$stdout\nSTDERR:\n$stderr", __METHOD__);
} elseif (YII_DEBUG) {
throw new Exception("AssetConverter command '$command' failed with exit code $status:\nSTDOUT:\n$stdout\nSTDERR:\n$stderr");
} else {
Yii::error("AssetConverter command '$command' failed with exit code $status:\nSTDOUT:\n$stdout\nSTDERR:\n$stderr", __METHOD__);
}
return $status === 0
}
Only if $status is not 0,then you got a error message.
And that usually means $command has something wrong.
When I ran to here, I could see it is 'lessc "path/to/frontend/web/less/main.less" "path/to/frontend/web/less/main.css" --no-color';
And I ran it in cmd.Then css file was created by it.
I wrote a similar code below like that function
$command='lessc "path/to/frontend/web/less/main.less" "path/to/frontend/web/less/main.css" --no-color';
$basePath="path/to/frontend/web";
$descriptor = [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$pipes = [];
$process = proc_open($command, $descriptor, $pipes /* $cwd, $env */ );
print_r($pipes);
$stdout = stream_get_contents($pipes[1]);
echo mb_convert_encoding($stdout, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );
$stderr = stream_get_contents($pipes[2]);
echo mb_convert_encoding($stderr, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );
if (is_resource($process)) {
fwrite($pipes[1], '<?php print_r($_ENV); ?>');
fclose($pipes[1]);
echo stream_get_contents($pipes[2]);
fclose($pipes[2]);
$return_value = proc_close($process);
echo "command returned $return_value\n";
}
And ran it in browser.Then I got a error "lessc is not recognized as an internal or external command".
So I chang config file config/main.php,
return [
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
],
'assetManager' => [
'converter' => [
'class' => 'yii\web\AssetConverter',
'commands' => [
'less' => ['css', 'lessc {from} {to} --no-color'],
],
],
],
],
'name' => 'FavorTGD',
];
I got a same a same message.So I check out php_info(),there no lessc program in path.there there.That all you need is just restart your apache.
And delete assetManager in main.php
Ended up fixing it by changing the command to reference the lessc.cmd directly
'assetManager'=>[
'converter' => [
'class' => 'yii\web\AssetConverter',
'commands' => [
'less' => ['css', 'c:\path\to\lessc.cmd {from} {to} --no-color'],
],
],
],
Not to happy about the fix, because this means i will need to change my settings when i go 'live', but nothing else worked. I tried symlinking it into the yii directory, commands directory, etc.. but no good.

Laravel 5.0 Sweet Alert Class 'UxWeb\SweetAlert\SweetAlertServiceProvider' not found

please i have done these :
"require": {
"uxweb/sweet-alert": "~1.1",
}
'providers' => [
'UxWeb\SweetAlert\SweetAlertServiceProvider::class'
]
'aliases' => [
'Alert' => UxWeb\SweetAlert\SweetAlert::class
]
but i keep getting the error.
I was working under proxy therefore my internet connection was not working in the command line hence,
composer update
Was not working

Yii2 disable asset of a vendor module

I have installed yii2-admin module, located in /vendor/mdmsoft/yii2-admin but I don't want it to load its own asset bundle. It there any way to disable this module asset bundle?
Yes, it's possible and even mentioned in official docs here. One way to do it is through application config:
return [
// ...
'components' => [
'assetManager' => [
'bundles' => [
'mdm\admin\AdminAsset' => false,
],
],
],
];
Another way - during runtime through component:
\Yii::$app->assetManager->bundles['mdm\admin\AdminAsset'] = false;