Я пытаюсь использовать подмешать охранник when
состояния, но во время компиляции я получаю следующее сообщение об ошибке:Вызов Mixin если переменный определена
.mixin is undefined
.mixin (@color) when (isstring(@color)) {
//some code
}
.mixin(#008000);
Когда я удалить условие when
он работает. В чем проблема?
Проблема в том, что у нас есть переменные внутри наших меньших файлов, которые определены в одном компиляционном процессе. Но во время другого компиляционного процесса эти переменные не определены, потому что здесь нам нужно немного динамически.
Поэтому я должен проверить, определена ли переменная. Когда я пытаюсь его на
$variables = [
'testColor' => '#fff111',
];
$lessc->setVariables($variables);
$cachedCompile = $lessc->cachedCompile($publicPath . $inputFile);
и
.mixin (@color:none) when (iscolor(@color)) {
color: #fff;
}
.mixin(@testColor);
Все работает. Но когда я удаляю переменную testColor
в переменном-массиве, она выходит из строя, потому что она не определена.
Нет ничего плохого в том, как вы определили mixin, и вы наверняка не получите эту ошибку. Вы можете проверить на lesstester.com. Кроме того, использование 'isstring()' в цвете означает, что mixin ничего не выводит, потому что условие терпит неудачу. – Harry
Вы также получаете ошибку с 'when (@color = '')'? – Manwal
Да, основная проблема, которую я пытаюсь исправить из-за защиты mixin, - проверить, определена ли переменная или нет. Есть ли другой способ сделать это меньше? – user3314010