1

varchar を取るフォームを作成しているときに問題が発生しましたが、cakephp はフィールドを int として認識します。

では、どうすれば修正できるでしょうか。

リレーションシップを追加する add 関数を次に示します。

public function add() {
    $this->set('title_for_layout', 'Send A Relationship Request');
    $this->set('stylesheet_used', 'homestyle');
    $this->set('image_used', 'eBOXLogoHome.jpg'); 
    $this->layout='home_layout';

    if ($this->request->is('post')) {

      $this->Relationship->set($this->request->data);
      if ($this->Relationship->validates(array('fieldList'=>array('receiver_id','Relationship.userExists'))))
      {
        $username=$this->Relationship->username;
        $this->Relationship->save($this->request->data);
        $this->Session->setFlash('The relationship has been saved');  
      } else {
        $this->Session->setFlash('The relationship could not be saved. Please, try again.');
      } 
    }
  }

そして、これが私たちのビューです(ユーザー名(varchar)を要求するフォーム)

<?php
echo $this->Form->create('Relationship', array('action'=>'add'));
echo $this->Form->input('sender_id',array('label'=>'Enter your username: '));
echo $this->Form->input('receiver_id',array('label'=>'Username of user: '));
echo "<br />";
echo $this->Form->end('Click here to add relationship');

?>
4

1 に答える 1

2

これは命名規則によるものです。Sender_id と receiver_id は、関係が送信者に属し、関係が受信者に属していることを表すため、デフォルトで整数値として扱われます。より良い結果を得るには、フィールドの命名規則を変更するか、次のコードを使用できます。

echo $this->Form->input('sender_id',array('label'=>'Enter your username:',
                                           'type'=>'text'));
于 2012-07-26T05:48:38.240 に答える