cakePHP3でフォームヘルパーを使用して入力フォームの構築をすると、デフォルトはラベルとインプットが同時に表示します。

echo $this->Form->control('example');
// 表示するタグ
<label>example</label><input type="text" id="example" name="example">

これをBootstrap3で装飾し、さらに他のインプットフォームにも適用していきたいと考えると、予めBootstrap3で適応するクラス名で部品を吐き出すようにテンプレートを設定してあげる必要があります。

$Templates = [
  'inputContainer' => '<div class="input {{type}}{{required}} form-group">{{content}}</div>',
  'formGroup' => '{{label}}<div class="col-sm-9">{{input}}</div>',
  'input' => '<input type="{{type}}" name="{{name}}"{{attrs}}/>'
];
$this->Form->setTemplates($Templates);

こうする事で、ヘルパーを使用してインプットを吐き出すときに自動で生成してくれます。labelのクラス名はテンプレート側ではなくヘルパー側でオプションをつけてあげたほうが良いかもしれません。

echo $this->Form->control('example', ['label' => ['class' => 'col-sm-3 control-label']]);

<div class="input text required form-group">
  <label class="col-sm-3 control-label" for="name-main">example</label>
  <div class="col-sm-9"><input type="text" name="example" class="form-control" id="example"></div>
</div>

これだとバリデーションでエラーがあった場合、inputContainerは適用されず、form-groupの中にエラーメッセージが挿入され、レイアウト崩れが起きてしまいます。

できればコンテンツの中で表示して欲しいわけで、その時はエラー表示用のテンプレートを設定し、さらにメッセージの表示位置も設定すると良いと思います。

$Templates = [
  'inputContainerError' => '<div class="input {{type}}{{required}} error form-group">{{content}}</div>',
  'inputContainer' => '<div class="input {{type}}{{required}} form-group">{{content}}</div>',
  'formGroup' => '{{label}}<div class="col-sm-9">{{input}}{{error}}</div>',
  'input' => '<input type="{{type}}" name="{{name}}"{{attrs}}/>'
];
$this->Form->setTemplates($Templates);