簡単な答えは、@scrappedcola が指摘したように、CSS がテキストエリアに影響を与えているということですが、この問題についてもう少し詳しく説明します。
なんで100%なの?
すべてのフォーム フィールドは幅の 100% を占めます。フォームをよりコンパクトにする必要がある場合は、幅を制限するグリッド列に配置できます。また、水平フォームを使用してスペースを節約したり、複数の列に流したりすることもできます。ここにデモがあります: http://agiletoolkit.org/codepad/gui/formstyle
どこに設定されていますか?
テキストエリアのインスペクターを開くと、テキストエリアに割り当てられている CSS プロパティを確認できます。
StyleRules の下の矢印をクリックすると (これは safari ですが、firefox の firebug アドオンも同様です)、次のルールがatk-main.css
ファイルに表示されます。
.atk-form fieldset .atk-form-row > .atk-form-field
input[type=text]:not([class*="span"]),
.atk-form fieldset .atk-form-row > .atk-form-field
input[type=password]:not([class*="span"]),
.atk-form fieldset .atk-form-row > .atk-form-field
textarea:not([class*="span"]),
.atk-form fieldset .atk-form-row > .atk-form-field select {
width: 100%;
}
は次のファイルatk-main.css
から生成されます。atk-main.less
fieldset .atk-form-row {
.clearafter();
margin-top:@margin/2;
&:first-child {margin-top:0;}
&.has-error>label {color:@error;}
&.has-error input {border-color:@error;}
>label {font-weight:bold;width:@label;margin-top:0.4em;float:left;}
>.atk-form-field {
margin-left:@label+@labelMargin;
input[type=text]:not([class*="span"]),
input[type=password]:not([class*="span"]),
textarea:not([class*="span"]),
select {width:100%;}
select {width:100%;margin-top:0.5em;}
textarea {display:block;margin-bottom:@margin/5;}
input+input {margin-left:0.4em;}
.atk-form-error {margin:@margin/5 0 0;color:@error;}
}
}
オーバーライドする方法は?
ローカル CSS ファイルを作成して、テキストエリア フィールドの幅を別の方法で設定できます。
$this->api->jui->addStaticStylesheet('yourfile');
手動で設定することもできます:
$f->addField('text','field');
$f->getElement('field')->setAttr('style','width: 50%');