suggestion is based on two principles:
- first suggest commands the begin with the unknown name, to suggest
commands after accidentally hitting enter
- second find similar commands by computing the levenshtein distance
which is a measurement on how many changes need to be made to convert
one string into another. This is perfect for finding typos.
This allows to auto-complete commands available by the `./yii`
executable on the bash by expanding the first argument with the TAB key.
E.g. Typing `./yii [TAB]` will list all commands. `./yii mig[TAB]` will
auto-complete to `./yii migrate` and tab after that will list all
migration sub-commands(actions).
fixes#475
Added `QueryInterface::emulateExecution()`, which allows preventing of
the actual query execution.
This allows to cancel `DataProvider` preventing search query execution
in case search model is invalid:
``` php
public function search($params)
{
$query = Item::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
$query->where('0=1');
$query->emulateExecution(); // No SQL execution will be done
return $dataProvider;
}
```
This also fix unecessary query in case of `via()` usage. See #12390.
fixes#12390fixes#6373close#12708
fixes#12840
Used @nkovacs draft as starting
point(https://github.com/yiisoft/yii2/issues/11037#issuecomment-193356450).
I also fixed some bugs in `yii.validation.js` and did some refactoring.
Implemented tests:
- yii.validation.js
Running tests:
- Install Node.js. I used the latest version available at the moment -
`v7.1.0`. Note that used `jsdom` dependent library version requires
`Node.js >= 4`.
- Run `npm install` to install dependencies.
- Execute `npm test` for running tests.
* prepare-travis-for-js:
remove CUBRID env from travis it is unused
Install APC on Ubuntu trusty
Fix MySQL database setup for ubuntu trusty
Switch travis OR from precise to trusty
Switch from precise to trusty is required mainly because of jsdom
dependency. It requires Node.js > 4. Precise has very old Node.js and
NPM versions and they can not be updated because of default versions of
C++ compilers. While it's possible somehow to install Node 6 on Precise,
see this [document](https://github.com/nodesource/distributions/blob/master/OLDER_DISTROS.md),
I think this is not elegant solution and I'm not 100%
sure it will work correctly with Travis and container-based precise dist.
Trusty has v6.3.0 by default which is enough and way better and newer.