Как сохранить id в модель?
Доброе утро.
Естественно у Вас не будет сохранять потому, что Вы не загружаете модель из POST, её там просто нет. Для этого Вам и потребовался скрытый input, что бы можно было загрузить необходимую модель через $model->load(). Поэтому со скрытым input всё работает.
Если Вы уберёте из кода загрузку модели, в которой только один id, то всё сработает.
Например, модель с единственным атрибутом id у Вас Direction. Значит в действии надо сделать так$model = new Direction();
$modelLang = new DirectionLang();

if ($modelLang->load(Yii::$app->request->post()) && $model->save()) {
     $modelLang->lang_id = 2;
     $modelLang->direction_id = $model->id;
     $modelLang->save();
      var_dump($model->getErrors());
      var_dump($modelLang->getErrors());

     return $this->redirect(['view', 'id' => $model->id]);
}
В этом случае всё сработает и можно удалить скрытый input из формы.
Другого пути нет, чтобы узнать какую модель сохранять, надо знаю ее id. Либо запихнуть вангу в сервер, и она будет определять какую запись соизволил чел отредактировать)