0

ユーザーが自分の情報を追加できるユーザープロファイルを作成しました。したがって、URLセクションに、Facebook、www.facebook.com/userなどの他のリンクを配置してもらいます。

しかし、[何も更新しない]をクリックすると更新されますか?

これがユーザーのモデルです:Models / User.php

<?php
class User extends AppModel {

    public $name = 'User';

    public $hasMany = array (
    'UserWeb'=>array(
        'className'=>'UserWeb',
        'foreignKey'=>'user_id'
        )
    );
}
?>

UserWebのモデル:Models / UserWeb.php

<?php
class UserWeb extends AppModel {

public $name = 'UserWeb';

public $belongsTo = array('User' =>
    array('className'  => 'User',
        'conditions' => '',
    'order'      => '',
    'foreignKey' => 'user_id'
    )
    );
}
?>

ユーザーのコントローラー:

$this->User->id = $this->Auth->user('id');
if ($this->request->is('post')) {
    if ($this->User->save($this->request->data, array('validate' => false))) {
        $this->Session->setFlash('Profile updated succsessefully!',
                                     'default', array('class' => 'okmsg'));

    $this->redirect($this->request->here);
    } else {
      $this->Session->setFlash('Profile could not be saved. Please, try again.',
                                       'default', array('class' => 'errormsg'));
    }
}

そして、ビューフォーム:

<?php
    echo $this->Form->create();
echo $this->Form->input('UserWeb.title',
         array('label'=>false,'placeholder'=>'Title'));
echo $this->Form->input('UserWeb.url',
         array('label'=>false,'placeholder'=>'Enter URL'));
echo $this->Form->end('Save');
?>

誰か助けてもらえますか?私は長い間解決策を見つけようとしています。フォームを送信すると、user_websテーブルに新しい情報が保存されません。

そして、ここにテーブルがあります:

CREATE TABLE `user_webs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT '0',
  `title` varchar(128) DEFAULT NULL,
  `url` varchar(128) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `web` (`user_id`),
  CONSTRAINT `web` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
4

1 に答える 1

2

関連モデルのデータを取得しようとしています。また、プライマリ モデルには保存するデータがありません。

ここでは 2 つのアプローチを取ることができます。

  1. あなたの現在の方法では、の情報を取得し、同じフォームから情報をUser提供してもらいます。UserWeb使用は、登録の一部として情報を提供します。これについては、関連付けられたモデル データの保存 - saveAll()を参照してください。

  2. 2 番目の方法では、登録時にユーザーに情報を提供してもらい、UsersWeb後で追加できるようにします。(後で、ユーザーは登録中にも更新できますが、同じ形式では更新できないことを意味します)。この使用のためにUserWeb。から同じフォームを表示し/yourapp/UsersWebs/addます。を提供する必要がありuser_idます。これはより洗練されたものになります。

PS: データを再度保存することを強くお勧めします。10 分もかからないでしょう。以前にこれを行ったことがあると思いますが、問題が発生した後、さらに 10 分時間を割いてみると、これらのことを自分の手の甲として理解するのに役立ちます。

于 2013-03-15T02:46:41.787 に答える