Это было сделано ради сео.
Однако, самому пришлось напрячься при переносе проекта с yii1 на yii2.
Нагуглить решения не вышло, поэтому выкладываю свой быстрый костыль.
Я просто в нужном мне контроллере переопределил метод createAction добавив в регулярку верхний регистр:
public function createAction($id)
{
if ($id === '') {
$id = $this->defaultAction;
}
$actionMap = $this->actions();
if (isset($actionMap[$id])) {
return Yii::createObject($actionMap[$id], [$id, $this]);
} elseif (preg_match('/^[a-zA-Z0-9\\-_]+$/', $id) && strpos($id, '--') === false && trim($id, '-') === $id) {
$methodName = 'action' . str_replace(' ', '', ucwords(implode(' ', explode('-', $id))));
if (method_exists($this, $methodName)) {
$method = new \ReflectionMethod($this, $methodName);
if ($method->isPublic() && $method->getName() === $methodName) {
return new \yii\base\InlineAction($id, $this, $methodName);
}
}
}
return null;
}
Оригинальный метод по ссылке
https://github.com/yiisoft/yii2/blob/master/framew...
Благо у меня CamelCase был в некритичных для сео местах типа апи или личный кабинет, поэтому на возможные проблемы с сео пофиг.