3

CakePHPは初めてです。ビューに2つの問題があります。

  • テキストフィールド名とテキストフィールド領域の間に改行があります。合格しようとしまし'div' => falseたが、うまくいきませんでした。改行を削除して両方を同じ行に表示するにはどうすればよいですか?

  • このテキストフィールドに検証ルールを追加しましたが、[保存]をクリックしてもエラーメッセージが表示されません。validatesモデルに追加する以外に何かする必要がありますか?

これが私の見解ですinput.ctp

echo $this->Form->input('fileId', array(
    'type'=>'text', 
    'style' => 'width: 200px; height: 15px'
));
echo $this->Form->end('Save Post');

これが私のモデルです:

var $validate = array(
    'fileId' => 'notEmpty',
    'message' => 'Should not be empty'
    );

コントローラ:

if ($this->request->is('post')) {
    $data = $this->request->data;
    if ($data) {
        // saving the data
    }
}
4

4 に答える 4

2

データを検証するには、次のようなものが必要です。

public $validate = array(
    'fileId' => array(
        'rule' => 'notEmpty',
        'message' => 'Should not be empty'
    )
);

そしてあなたのController

if ($this->request->is('post')) {
    if ($this->Model->save($this->request->data)) {
        // saved
    }
}

保存できない場合は、対応するフィールドの近くにエラーが表示されます。$this->Model->validationErrorsまたは、配列を使用してエラーをカスタマイズできます。

改行の質問については、これらの要素が配置されている場所のために、200pxが自動改行を実行することを確認してください。

于 2012-10-11T11:10:22.143 に答える
2

を使用していない場合は、を使用saveしてデータを手動で検証する必要がありますvalidates。そのような場合はset、データも必要です。たとえば、コントローラーで

   $this->ModelName->set($data);
   $this->Modelname->validates();
于 2012-10-16T08:09:14.350 に答える
1

検証エラーは、validates()またはsave()が呼び出されたときに表示されます。アクションを完全に設定します。フィールド、ラベル、およびエラーを出力するFormHelper :: inputを使用していない場合は、を使用してエラーも手動で出力する必要があります$this->Form->error('fileId')

そしてフォームのためにこれを試してください:あなたのcssにこれを追加してください

label { float: left; 
        width: 150px; 
        display: block; 
        clear: none; 
        text-align: left; 
        vertical-align: middle; 
        padding-right: 0px;} 

.xg { 
display: block; 
float:left; 
} 

echo $this->Form->input('fileId', array('div'=>'xg','type'=>'text', 'style' => 'width: 200px; height: 15px'));
echo $this->Form->end('Save Post');
于 2012-10-11T10:25:25.270 に答える
0

次の方法で出力をカスタマイズできます。

<tr>
    <td><label>Username</label></td>
    <td>
        <?php echo $this->Form->input('username',array('label'=>false,'div'=>false,'error'=>false)); ?>
    </td>
<td><?php echo $this->Form->error('username'); ?></td>
</tr>

このメソッドは、同じ行に出力を提供します。

于 2012-10-11T11:05:06.083 に答える